在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题: 一个char类型的变量,我们要得到其中包含的字符类型是字母、阿拉伯数字、标点符号、控制符号、分隔符、特殊符号、空格还是替代符(例如值大于64K的Unicode字符集)。同样,一个string类型的变量,我们要得到其中某一个字符或某几个字符的类型。解决方案: 要得到字符的类型,可以使用System.Char命名空间中的内置静态方法,具体如下:
讨论: 下面的例子描述了用怎样的方法可以返回一个字符的类型。首先,要创建一个几种字符类型的枚举类型: public enum CharKind { Digit, Letter, Number, Punctuation, Unknown } 接下来,创建一个包含判断字符类型并且返回值为CharKind枚举类型的的扩展方法: static class CharStrExtMethods { public static CharKind GetCharKind(this char theChar) { if (Char.IsLetter(theChar)) { return CharKind.Letter; } else if (Char.IsNumber(theChar)) { return CharKind.Number; } else if (Char.IsPunctuation(theChar)) { return CharKind.Punctuation; } else { return CharKind.Unknown; } } } GetCharKind扩展方法展示了使用多种内置静态方法测试字符类型的手段。所有不同的字符类型被定义在一个枚举类型并且由GetCharKind方法返回。 假如无论怎样,一个字符串中的每个字符都要需要被测试其类型,可使用char结构的静态重载方法。接下来的代码修改了GetCharKind扩展方法,操作字符串变量接受 static class CharStrExtMethods { public static CharKind GetCharKindInString(this string theString, int charPosition) { if (Char.IsLetter(theString, charPosition)) { return CharKind.Letter; } else if (Char.IsNumber(theString, charPosition)) { return CharKind.Number; } else if (Char.IsPunctuation(theString, charPosition)) { return CharKind.Punctuation; } else { return CharKind.Unknown; } } } 接下来的代码段判断字符串中的第5个字符是否为数字。(charPosition参数从0开始计数) string data = "abcdefg"; if (string.GetCharKindInString(4) == CharKind.Digit) {...} 表2-1描述了char结构中的每一个静态方法: 表2-1:char结构方法
在.NET 2.0框架中,有少数额外的Is*类型的函数被添加进来以增强现有的方法,如果问题中的字符是一个字母(也就是IsLetter方法返回为true),可以用表2-2的方法再判断字母是否为大写还是小写。 表2-2:Char 结构的Uppercase 和 lowercase 方法
如果问题中的字符是代理项字符(也就是IsSurrogate方法返回为true),可以使用表2-3中的方法得到更多代理项字符的信息。 表2-3:Char 结构的Surrogate方法
除以上的Surrogate方法以外,当一个代理字符项由两个字符组成时,IsSurrogatePair方法返回true,也就是说当一人字符为高位替代符,当另一个字符为低位替代符时。 最后在这组方法中要补充说明的是IsLetterOrDigit方法,当问题中的字符为字母或数字时该方法返回true,当需要判断某个字符是否为字母或数字时,可以使用IsLetter 方法和IsDigit 方法。 还可参见 MSDN中的“Char 结构”相关文档。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论