char.IsLetter的使用

时间:2022-09-06 23:25:38

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

char.IsLetter的使用

输出:Chiantxt  。对吗?

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

char.IsLetter的使用

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

char.IsLetter的使用

???

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

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

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

char.IsLetter的使用

哦,大概看明白了

char.IsLetter的使用

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

char.IsLetter的使用

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

char.IsLetter的使用

设个断点调试看看

char.IsLetter的使用

char.IsLetter的使用

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

微软是这样定义OtherLetter的:

char.IsLetter的使用

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

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

在下面的语句中

CharUnicodeInfo.GetUnicodeCategory('☆')

得到的返回值是:OtherSymbol

char.IsLetter的使用

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

char.IsLetter的使用

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

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

char.IsLetter的使用

只输出大写字母的方法:

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 |= ' '; 这个语句的用法了吧,它只把当前大写或者小写字母都转成小写字母

char.IsLetter的使用的更多相关文章

  1. 2&period;1确定一个char包含何种字符

    知识点: 1.char.IsControl 2.char.IsPunctuation 3.char.IsSurrogate 4.char.IsWhitespace 5.char.IsDigit 6.c ...

  2. 字符串String及字符Char的相关方法

    一.字符串: 1.访问String中的字符: string本身可看作一个Char数组. string s = "hello world"; ; i < s.Length; i ...

  3. C&num;入门篇6-1:字符串操作 char常用的函数

    //char 字符的常见操作 public static void FChar() { //判定字符的类别 char ch1 = 'a';//使用小引号 bool bl = true; bl = ch ...

  4. 探究 C&num; 中的 char 、 string(一)

    目录 探究 C# 中的 char . string(一) 1. System.Char 字符 2. 字符处理 3. 全球化 4. System.String 字符串 4.1 字符串搜索 4.2 字符串 ...

  5. C&num;之字符串篇

    大杂烩 一.类型转换    字符串转整形: int a = int.Parse(""); //不能转换null int b = Convert.ToInt32("&quo ...

  6. QQ五笔词库转拼音词库小工具

    参考文章<用QQ拼音打五笔>中提供的信息而制作的小工具,功能是将QQ五笔导出词库文件转换为QQ拼音自定义短语使用的.ini格式文件,这样就可以使用QQ拼音进行五笔拼音混输了. 混输效果不错 ...

  7. 开通博客的第一天上传我的C&num;基础笔记,个人觉得很好用。

    1.索引器  string arrStr = "sddfdfgfh";  索引器的目的就是为了方便而已,可以在该类型的对象后面直接写[]访问该对象里面的成员  Console.Wr ...

  8. Lucene&period;net

    模糊查询-〉数据库全文检索-〉Lucene 一元分词(lucene内置) Analyzer analyzer = new CJKAnalyzer(); TokenStream tokenStream ...

  9. 什么是Unicode letter

    起因:从一段代码说起 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

随机推荐

  1. php中session锁--如何防止阻塞请求(译)

    现代浏览器限制到一个host并发连接的数量一般为4或6.这意味着,如果您的web页面加载几十个来自同一个host的assert file(js.图像.css)时,由于并发数的限制,会产生排队.同样甚至 ...

  2. git revert和git reset的区别

    git revert 是撤销某次操作,此次操作之前的commit都会被保留 git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区 具体一个例子,假设有三个commit, git s ...

  3. Remote Desktop Connection Manager (RDCMan)

    当前最新版本是 v2.7. 通过这款软件,我们便可以轻松的管理和访问数个RDP.左边的列表中我们可以创建总的分区列表(即 RDCMan Group),该列表保存采用的是RDG扩展名,使用时通过&quo ...

  4. 裴波那契数列 JavaScript 尾递归实现

    一般递归实现 : //经典递归 function fibonacci(n) { return (function(n) { ) ; ); })(n); } 或者: function fibonacci ...

  5. The Class Loader Hierarchy--转载

    Class loaders in the Application Server runtime follow a delegation hierarchy that is illustrated in ...

  6. 获取listboxitem在ListBox中的index并转换成abcd

    原文 获取listboxitem在ListBox中的index并转换成abcd 截图如下: 1.实现Converter  获取到listbox,并得到listitem在listbox中的index p ...

  7. while循环的讲解

    条件语句有两种方式: if() 条件语句 switch()   条件语句 循环语句: for() 循环语句 for in 遍历队象属性的循环 while 循环 案例:算出1到10的和 1.var i= ...

  8. debug阶段团队贡献分分配

    小组名称:飞天小女警 项目名称:礼物挑选小工具 小组成员:沈柏杉(组长).程媛媛.杨钰宁.谭力铭 debug阶段各组员的贡献分分配如下: 姓名 团队贡献分 程媛媛 5.8 沈柏杉 6.5 谭力铭 3. ...

  9. MYSQL指定用户访问指定数据库

    1.使用navicat 1)首先使用root用户新建连接 2)新建mysql用户 3)点击权限,选择添加权限,出现MySQL中已存在的数据库列表,选择你要为该新建用户开放的数据库,此处选择“maiba ...

  10. ASP&period;NET MVC如何使用输出缓存

    通过这篇文章你将学习到在MVC中如何使用输出缓存,业务逻辑我就不多介绍了,主要是Outputcache的基本使用.至于数据缓存还是等我的下一篇文章吧,一步一步来不急的.   输出缓存的使用方法是在Co ...