C#-判断字符串中是否存在汉字

2021年04月19日 15:11 · 阅读(550) ·

开发环境

名称 版本
操作系统 Windows 10 X64
Visual Studio 12.0.21005.1 REL

参考

C#三种判断字符是否为汉字的方法

汉字unicode编码范围

汉字编码范围

编码 说明
GB2312 1981 年 5 月 1 日发布的简体中文汉字编码国家标准。
GB2312 对汉字采用双字节编码,收录 7445 个图形字符,其中包括 6763 个汉字。
BIG5 中国台湾省繁体中文标准字符集,采用双字节编码,共收录 13053 个中文字,1984 年实施。
GBK 1995 年 12 月发布的汉字编码国家标准,是对 GB2312 编码的扩充,对汉字采用双字节编码。
GBK 字符集共收录 21003 个汉字,包含国家标准 GB13000-1 中的全部中日韩汉字,和 BIG5 编码中的所有汉字。
GB18030 2000 年 3 月 17 日发布的汉字编码国家标准,是对 GBK 编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录 27484个汉字。
GB18030 字符集采用单字节、双字节和四字节三种方式对字符编码。兼容 GBK 和 GB2312 字符集。
Unicode 国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

汉字 unicode 编码表

字符集 字数 Unicode 编码
基本汉字 20902 字 4E00-9FA5
基本汉字补充 38 字 9FA6-9FCB
扩展A 6582 字 3400-4DB5
扩展B 42711 字 20000-2A6D6
扩展C 4149 字 2A700-2B734
扩展D 222 字 2B740-2B81D
康熙部首 214 字 2F00-2FD5
部首扩展 115 字 2E80-2EF3
兼容汉字 477 字 F900-FAD9
兼容扩展 542 字 2F800-2FA1D
PUA(GBK)部件 81 字 E815-E86F
部件扩展 452 字 E400-E5E8
PUA增补 207 字 E600-E6CF
汉字笔画 36 字 31C0-31E3
汉字结构 12 字 2FF0-2FFB
汉语注音 22 字 3105-3120
注音扩展 22 字 31A0-31BA
1字 3007

判断是否存在汉字

  1. /// <summary>
  2. /// 判断是否存在汉字
  3. /// </summary>
  4. /// <param name="value">单个字符</param>
  5. /// <returns>是汉字返回 true</returns>
  6. private static bool IsHasChinese(string value)
  7. {
  8. bool result = false;
  9. //基本汉字 20902字
  10. //https://www.cnblogs.com/straybirds/p/6392306.html
  11. Regex rg = new Regex("^[\u4e00-\u9fa5]$");
  12. for (int i = 0; i < value.Length; i++)
  13. {
  14. result = rg.IsMatch(value[i].ToString());
  15. if (result) return result;
  16. }
  17. return result;
  18. }

测试

  1. static void Main(string[] args)
  2. {
  3. #region 判断是否有中文
  4. //string str = "?";
  5. string str = "中文简体";
  6. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  7. else Console.WriteLine("\"{0}\",没有中文",str);
  8. str = "體國";
  9. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  10. else Console.WriteLine("\"{0}\",没有中文", str);
  11. str = "english";
  12. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  13. else Console.WriteLine("\"{0}\",没有中文", str);
  14. str = " ナな";
  15. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  16. else Console.WriteLine("\"{0}\",没有中文", str);
  17. str = "??";
  18. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  19. else Console.WriteLine("\"{0}\",没有中文", str);
  20. str = "中文??englissh";
  21. if (IsHasChinese(str)) Console.WriteLine("\"{0}\",有中文", str);
  22. else Console.WriteLine("\"{0}\",没有中文", str);
  23. #endregion
  24. }

运行结果

  1. "中文简体",有中文
  2. "體國",有中文
  3. "english",没有中文
  4. " ナな",没有中文
  5. "??",没有中文
  6. "中文??englissh",有中文