• char.IsLetter的使用


    先看一下下面的代码,大家会觉得控制台输出什么?

    输出:Chiantxt  。对吗?

    因为你看到char.IsLetter这个方法的文字的注释是这样写的:

    但实际上输出的结果是这样的:

    ???

    怎么还输出“ィシ中国”这样的字符?

    既然输入上面这几个字符,“☆”这个符号怎么又没有输出?

    微软是怎么封装这个char.IsLetter方法的,用反编译工具看看:

    哦,大概看明白了

    如果char.IsLetter里面没有加这个方法,就不会输入“中国”这样的字符了

     

    但是为什么呢?继续深入一步看看里面的方法

    设个断点调试看看

    原来微软把ィ定义成OtherLetter,然后返回个true;那么char.IsLetter这个方法检查这样的字符的时候,返回值就是true.也就知道了为什么“中国”这样的字符也被输出来了。

    微软是这样定义OtherLetter的:

    我也不是很明白这个定义的意思,我猜测,微软是除了ABC abc...等大小写字母,把其他各个国家的文字都定义成了字母,像韩国“안녕하세요”等等,都定义成OtherLetter。

    那这样也就理解了“☆”这个符号怎么又没有输出了,因为这个不是哪个国家的文字。

    在下面的语句中

    CharUnicodeInfo.GetUnicodeCategory('☆')

    得到的返回值是:OtherSymbol

     

    只有符合下面条件,返回值才可以是true

    猜测性的总结:char.IsLetter(char c) 这个方法:当 c 为 大小写字母或者是其他国家的文字,返回值为true

    如果想在一个字符串中遍历输出大小写字母,可以使用下面这个方法:

     

    只输出大写字母的方法:

    public static bool IsLetter2(char c)
    {
    // c |= ' ';
    return c >= 'A' && c <= 'Z';
    }

    只输出小写字母的方法

    public static bool IsLetter2(char c)
    {
    // c |= ' ';
    return c >= 'a' && c <= 'z';
    }

    这里大家也就知道了 

     c |= ' '; 这个语句的用法了吧,它只把当前大写或者小写字母都转成小写字母

  • 相关阅读:
    小学期实践2
    小学期实践小组心得
    小学期实践1
    《构建之法》8
    《构建之法》7
    《构建之法》6
    《构建之法》5
    《构建之法》4
    《构建之法》3
    lintcode
  • 原文地址:https://www.cnblogs.com/qq605490312/p/6047081.html
Copyright © 2020-2023  润新知