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 |= ' '; 这个语句的用法了吧,它只把当前大写或者小写字母都转成小写字母
char.IsLetter的使用的更多相关文章
- 2.1确定一个char包含何种字符
知识点: 1.char.IsControl 2.char.IsPunctuation 3.char.IsSurrogate 4.char.IsWhitespace 5.char.IsDigit 6.c ...
- 字符串String及字符Char的相关方法
一.字符串: 1.访问String中的字符: string本身可看作一个Char数组. string s = "hello world"; ; i < s.Length; i ...
- C#入门篇6-1:字符串操作 char常用的函数
//char 字符的常见操作 public static void FChar() { //判定字符的类别 char ch1 = 'a';//使用小引号 bool bl = true; bl = ch ...
- 探究 C# 中的 char 、 string(一)
目录 探究 C# 中的 char . string(一) 1. System.Char 字符 2. 字符处理 3. 全球化 4. System.String 字符串 4.1 字符串搜索 4.2 字符串 ...
- C#之字符串篇
大杂烩 一.类型转换 字符串转整形: int a = int.Parse(""); //不能转换null int b = Convert.ToInt32("&quo ...
- QQ五笔词库转拼音词库小工具
参考文章<用QQ拼音打五笔>中提供的信息而制作的小工具,功能是将QQ五笔导出词库文件转换为QQ拼音自定义短语使用的.ini格式文件,这样就可以使用QQ拼音进行五笔拼音混输了. 混输效果不错 ...
- 开通博客的第一天上传我的C#基础笔记,个人觉得很好用。
1.索引器 string arrStr = "sddfdfgfh"; 索引器的目的就是为了方便而已,可以在该类型的对象后面直接写[]访问该对象里面的成员 Console.Wr ...
- Lucene.net
模糊查询-〉数据库全文检索-〉Lucene 一元分词(lucene内置) Analyzer analyzer = new CJKAnalyzer(); TokenStream tokenStream ...
- 什么是Unicode letter
起因:从一段代码说起 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...
随机推荐
- 【代码笔记】Web-ionic-安装及第一个app
一,下载ionic v1.0.1版本,下载地址为:ionic-v1.0.1.zip. ionic 最新版本下载地址:http://ionicframework.com/docs/overview/#d ...
- VUE组件 之 倒计时(防刷新)
思路: 一.效果图: 二.CSS代码 .box{ width: 300px; height: 100px; line-height: 100px; margin: 100px auto; backgr ...
- Android RecycleView 自定义Item的使用
自定义布局的RecycleView需要自己实现Adapter,ViewHolder和布局: 自定义Adapter继承RecycleView.Adapter,重写getItemCount(),onBin ...
- (网页)Http状态码大全(200、404、500等)(转CSDN)
当我们从客户端向服务器发送请求时 服务器向我们返回状态码 状态码就是告诉我们服务器响应的状态 通过它,我们就可以知道当前请求是成功了还是出现了什么问题 状态码是由3位数字和原因短语组成的(比如最常见的 ...
- 洗礼灵魂,修炼python(28)--异常处理(2)—>运用异常
你可能会想,卧槽这标题取的,前面不是说异常就是报错吗?异常还能运用? 是的,异常确实可以运用,可以刻意制造异常,在出现异常时捕获异常并对异常处理,所以进入本篇博文的话题—异常处理 异常处理: 异常处理 ...
- MySQL 8.0 —— 数据字典
1.简介 MySQL 8.0 将数据库元信息都存放于InnoDB存储引擎表中,在之前版本的MySQL中,数据字典不仅仅存放于特定的存储引擎表中,还存放于元数据文件.非事务性存储引擎表中.本文将会介绍M ...
- php处理手机号中间的四位为星号****
在显示用户列表的场景中,一般用到手机号的显示时都需要对手机号进行处理,一般是把中间的四位换成星号****,我本人用php处理的思路是进行替换,用****替换手机号的中间四位 代码如下: $all_lo ...
- Navicat连接Oracle 报 ORA-12737 set CHS16GBK错误
4,680 今天看到0day5上面更新了一个用友ERP的漏洞,确实可以下载任意文件:但是用友ERP基本上都是使用了oracle数据库,必须要有一个好的数据库连接工具才可以,Navi ...
- 【PAT】B1038 统计同成绩学生(20)(20 分)
#include<stdio.h> int arr[102]={0};//分数作为自己的下标,注意 int main(){ int N;scanf("%d",& ...
- tkinter学习系列之(五)Checkbutton控件
目录 目录 前言 (一)基本属性 (二)案例 1.简单的复选框 2.组合复选框 目录 前言 复选框:可以同时多选的一组框,其只有两种状态,选中与未选中. (一)基本属性 (1)说明: tkinter里 ...