分享
2023年【isnumber函数】ISNUMBER函数的用法实例.docx
下载文档

ID:1467234

大小:14.03KB

页数:7页

格式:DOCX

时间:2023-04-20

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
isnumber函数 2023 isnumber 函数 用法 实例
【isnumber函数】ISNUMBER函数的用法实例 篇一:别误用IsDigit与IsNumber函数 需要推断Char是否为数字,查看了下MSDN,觉察有三种方法: Char.IsDigit (aChar) 指示指定字符串中位于指定位置处的字符是否属于十进制数字类别 Char.IsNumber(aChar) 指示指定字符串中位于指定位置的字符是否属于数字类别 aChar=0aCharlt;=9 推断aChar是否位于‘0’到‘9’之前 等同于第一种 用.NET Reflector 查看事实上现代码: 1. { 2. if (!IsLatin1(c)) 3. { 4.return CheckNumber(CharUnicodeInfo.GetUnicodeCategory(c)); 5. } 6. if (!IsAscii(c)) 7. { 8.return CheckNumber(GetLatin1UnicodeCategory(c)); 9. } 10. return ((c = 0) (c lt;= 9)); 11. } 1. { 2. if (!IsLatin1(c)) 3. { 4.return (CharUnicodeInfo.GetUnicodeCategory(c) == 5. nicodeCategory.DecimalDigitNumber); 6. } 7. return ((c = 0) (c lt;= 9)); 8. } 篇二:别误用IsDigit与IsNumber函数 别误用IsDigit与IsNumber函数 1、起因 最近觉察程序中有一段操纵TextBox数字输入的代码,相信大家都不会太陌生,如下: void int_KeyPress(object sender, KeyPressEventArgs e){ const char Delete = (char)8; if (!Char.IsDigit(e.KeyChar) e.KeyChar != Delete) { andled = true; } } 乍一看,好似没有啥征询题,但是却出现了一个bug,可以输入全角的数字,如:0、1、2、3等。错误的根源确实是上面代码中用到的IsDigit函数,因此就有了下面的一番探究,让我们来看看IsDigit函数的真面目。 2、IsDigit函数 查阅MSDN,告知该函数是推断字符是Unicode的十进制数字的函数。在查看其源代码 public static bool IsDigit(char c) { if (!IsLatin1(c)) return CharUnicodeInfo.GetUnicodeCategory(c) == UnicodeCategory.DecimalDigitNumber; return c = 0 c lt;= 9; } 第一行的IsLatin1函数是推断字符是0~255的函数,而全角的0、1、2、3等的Unicode编码不在这个范围,因此就执行了下面这句代码: CharUnicodeInfo.GetUnicodeCategory(c) == UnicodeCategory.DecimalDigitNumber; 而关于Unicode的分类中,半角的1,2,3和全角的0、1、2、3等都被归为了DecimalDigitNumber,因此关于全角的数字,这个函数返回了true。 还有一个函数IsNumber和IsDigit功能类似,我们是否可以用它来代替呢?看下面的分析 3、IsNumber函数又是何物? 先看看这个函数的定义 public static bool IsNumber(char c) { if (!IsLatin1(c)) return CheckNumber(CharUnicodeInfo.GetUnicodeCategory(c)); if (!IsAscii(c)) return CheckNumber(GetLatin1UnicodeCategory(c)); return c = 0 c lt;= 9; } internal static bool CheckNumber(UnicodeCategory uc) { switch (uc) { case UnicodeCategory.DecimalDigitNumber: tterNumber: case UnicodeCategory.OtherNumber: return true; } return false; } 和IsDigit函数相比有3点区别: 3)多了一个IsAscii的推断(0~127) 特别显然IsNumber的范围更广了。下面列举几种IsNumber认为是数字的字符 UnicodeCategory.LetterNumber:Ⅰ、Ⅱ、Ⅲ UnicodeCategory.OtherNumber:①、②、③ 128~255中有哪些字符会被IsNumber认为是数字,有兴趣的可以本人去测试。 测试的方法可以利用这个函数:System.Globalization.CharUnicodeInfo.GetUnicodeCategory(char c) ,返回的是一个UnicodeCategory类型,你可以看看是不是IsNumber的几个类型就明白了。 4、结论 搞明晰了上面这两个函数的内部实现,那么在推断是否是ASCII数字(0~9)的时候,我们就需要留意以下几点了。 1)不能用IsDigit和IsNumber函数推断是否是ASCII数字,这两个函数都有可能把ASCII以外的某些字符当做是数字。 2)尽量用这种方式推断: c = 0 c lt;= 9(因此也可以用正那么表达式)。 3)数字推断的严格性,从严到松依次是: c = 0 c lt;= 9 IsDigit IsNumber 4)修正上面的bug函数作为完毕 void int_KeyPress(object sender, KeyPressEventArgs e) { const char Delete = (char)8; r lt;= 9) e.KeyChar != Delete) { e.Handled = true; } } 篇三:excel函数使用实例20230211 Excel函数使用实例 唱润刚 1 快捷输入 ALT+178 (M2),ALT+179(M3) Alt+10(代表excel中alt+enter) 示成0.1)或整数位(0.9999999会显示成1)。 在自动选择时,会按实际数据进展大小比照,比方,0.0999999,中选择条件为大于等于0.1时,这个数据无法被选择出来,按0.0999999lt;0.1对待。 3 援用单元格的各种方法比照 1) Indirect(ref_text,[a1]) []内参数可以省略 函数只有一个参数(该参数可以再套用其他函数),该参数必须符合单元格表达法,因此函数的合法参数,必须同时含有列号(A、B、C、D等字母)和行号(1、2、3、4等数字)。详细参见以下三种方式; 前两种方式中,我们假设A1单元格的数据是e2,而E2单元格的数据是250。 (1) 简单援用,使用Indirect(a1); 该公式的返回值是250。 Indirect函数内的参数,最终结果只接受文本格式,假设参数是这种a1的援用格式,会先将该援用进展计算,所得的值再作为indirect的参数,也确实是说,该援用单元格内的数据必须是一个类似“a1〞、“b2〞等这种款式的文本,否那么的话,最后indirect函数会返回错误值。 顺便说一下,由于这里a1是个变量,因此当公式向左右或上下拖拉时,会自动改变,因此当需要固定参数的时候,需使用$a$1,即Indirect($a$1)。 (2) 列号和行号同时为文本时,使用Indirect(“a1〞) 该公式的返回值是e2,而并非E2单元格内的数值。 (3) 以上两种方式的混合方式,列号和行号不同时为文本时,使用连字符对列号和 行号进展连接; 比方一个是文本一个为援用(或函数),或者两者都是援用(或函数),可以用连字符, 连接列号和行号,如〞a〞b1;〞a〞row();a1〞2〞;a1row()。 如:需要援用a1的值,那么为=indirect(“a1〞),假设需要使用a1单元格内的内容作为参数,那么=indirect(a1a2),其中,a1中应为a、b等字母,a2中应为数字,比方a1为c,a2为2,c2为500,那么=indirect(a1a2)返回值是500。 2) Index(array,row_num,[column_num]),Index(reference,row_num,[column_num],[area_num]) 留意[]里的参数在某种条件下是可以省略的。 该函数有两种用法: 第一种是array参数给出一个区域,然后row_num给出行号,column_num给出列号,假设array参数提供的区域只有一列,那么该参数可以省略。 留意这里的行号和列号都是相关于给定区域而言的,都是相对援用。 =index(a:a,1)表示a1单元格。 =index(1:1,2)表示b1单元格。 =index(a:c,3,2)表示b3单元格。 其中a:a表示第一整列,也确实是A整列,1:1表示第一整行,以此类推比方b:b,a:c,2:2,1:3等等。 第二种,Reference对一个或多个单元格区域的援用,格式为:(A1:B4,D1:E4,G1:H4),留意这里括号不能忘,然后利用area_num参数表示需要返回的区域数,用1、2、3等数字表示。 比方:=INDEX((A2:C8,A11:C14),3,2,2),最后返回的是第二个区域第二列第三行的数据,也确实是B13的值,属于相对行号和列号。 3) Address(row_num,column_num,abs_num,[a1],[sheet_text]) 第一个参数表示行号,第二个参数表示列号,第三个可以省略,默认为绝对援用,也确实是第一、二两个参数表示的是绝对单元格的行号和列号。最后两个参数通常下省略。 abs_num:1或省略,绝对援用;2 绝对行号,相对列标;3 相对行号,绝对列标;4 相对援用 这里需要留意的是,address返回的是一个单元格表示,而不是该单元格的值,这和indirect函数恰好相反。比方=ADDRESS(1,1),它的返回结果是a1单元格的表示:$A$1,而并不是a1单元格的值。 按照第三个参数的改变,返回值可以如下变化: =ADDRESS(1,2,2),它的返回值是B$1; =ADDRESS(1,2,3),它的返回值是$B1; =ADDRESS(1,2,4),它的返回值是B1; indirect可以返回单一的单元格,没有数组功能 index函数的行号和列号是相关于援用范围而言的 address利用列号和行号就可以援用某个单元格,默认情况下,这里的行号和列号是相关于整个表格的 4 交换掉单元格内空格 1) 保存两个符号中间的一个,去掉前后的所有空格。 由于在trim公式中,两个字符之间有一个空格的ASCII码值为160,而其他一般空格是32。 =trim()。 2) 交换掉单元格内所有空格 =clean(substitute(a1,char(32),char(7))) 需使用substitute函数,先交换出里面的保存空格。 char(32)一般空格 char(160)特别空格 CLEAN 函数被为删除文本中7位ASCII码的前32个非打印字符(值

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开