回答
根据所提供的信息here in unicode website,您可以找到中国或任何其他语言的块,然后执行一个解析器来检查,如果一个字的范围或没有。就像
public bool IsChinese(string text)
{
return text.Any(c => c >= 0x20000 && c <= 0xFA2D);
}
注意
作为一个方便的参考,Unicode协会here提供了对Unicode的HAN(汉)Database (Unihan)搜索界面。
我想以上提供的数据库链接显示你的人物
0x20000大于0xfa2d。条件c> = 0x20000 && c <= 0xFA2D? – cxwangyi 2014-11-17 01:45:41
您需要查询包含每个unicode字符信息的Unicode字符数据库。 C#中可能有一个实用程序功能可以为您执行此操作。否则,你可以从互联网下载它。
只需检查字符以查看代码点是否在所需的范围内。对于exampe,看到了这个问题:
What's the complete range for Chinese characters in Unicode?
您可以使用正则表达式匹配Supported Named Blocks:
private static readonly Regex cjkCharRegex = new Regex(@"\p{IsCJKUnifiedIdeographs}");
public static bool IsChinese(this char c)
{
return cjkCharRegex.IsMatch(c.ToString());
}
然后,您可以使用:
if (sometext.Any(z=>z.IsChinese()))
DoSomething();
根据维基百科(https://en.wikipedia.org/wiki/CJK_Compatibility),有几个字符代码diapasons。 这里是我的方法来检测基于上面的链接中国字符(F#代码,但它可以很容易地转换)
let isChinese(text: string) =
text |> Seq.exists (fun c ->
let code = int c
(code >= 0x4E00 && code <= 0x9FFF) ||
(code >= 0x3400 && code <= 0x4DBF) ||
(code >= 0x3400 && code <= 0x4DBF) ||
(code >= 0x20000 && code <= 0x2CEAF) ||
(code >= 0x2E80 && code <= 0x31EF) ||
(code >= 0xF900 && code <= 0xFAFF) ||
(code >= 0xFE30 && code <= 0xFE4F) ||
(code >= 0xF2800 && code <= 0x2FA1F)
)
和韩文字符编码在一起。
访问此FAQ:http://www.unicode.org/faq/han_cjk.html
中国字都分布在serveral的块。
访问这个wiki:https://en.wikipedia.org/wiki/CJK_Unified_Ideographs
你会发现有以Unicode网站serveral的CJK字符图表。
为了简单起见,你可以使用中国字的最小和最大范围:
0x4e00和0x2fa1f检查。
这为我工作:
var charArray = text.ToCharArray();
var isChineseTextPresent = false;
foreach (var character in charArray)
{
var cat = char.GetUnicodeCategory(character);
if (cat != UnicodeCategory.OtherLetter)
{
continue;
}
isChineseTextPresent = true;
break;
}
正如一些人在这里提到的,在Unicode中,中国,日本和韩文字符编码在一起,并有几个范围吧。 https://en.wikipedia.org/wiki/CJK_Compatibility
为了简单起见,这里的检测所有的CJK范围内的代码示例:
public bool IsChinese(string text)
{
return text.Any(c => (uint)c >= 0x4E00 && (uint)c <= 0x2FA1F);
}
谢谢!这对我来说有些中文字符不适用于@ nasser-hadjloo的答案。 – 2017-08-31 07:46:19
- 1. 有没有办法检查文件是否在使用
- 2. 有没有办法检查(文件)句柄是否有效?
- 3. 有没有办法来检查口语命令是否包含Windows语音识别中的某些“关键字”?
- 4. 有没有办法看多个文本框来查看文本是否改变?
- 5. 有没有办法来检查bean是否在spring上下文中定义?
- 6. 是否有一种语言具有这种简化的语法?
- 7. 有没有办法使用一种针对多种语言的ANTLR语法?
- 8. Facebook:有没有办法检查我是否拥有某些权限?
- 9. 有没有办法改变这种语言的变量值?
- 10. 有没有办法检查代码是否在TransactionScope中执行?
- 11. 有没有办法检查我的代理是否在线?
- 12. 有没有办法检查子进程是否仍在运行?
- 13. 可可 - 有没有办法检查NSURLConnection是否存在缓存?
- 14. 如何检查资源是否翻译为某种语言
- 15. 有没有办法检查一个TextView的文本是否被截断
- 16. 有没有办法来检查变量是否在Java中定义?
- 17. 有没有办法来检查一个元素是否有鼠标悬停?
- 18. 有没有办法检查我的脚本是否在phantomjs中运行?
- 19. 有没有办法编译gcc来支持单一语言?
- 20. 有没有办法检查RDP连接是否可能?
- 21. 有没有办法检查下一个令牌是否结束?
- 22. 有没有办法检查用户目前是否空闲?
- 23. 有没有办法检查tethering是否活动?
- 24. 有没有办法检查符号是否被引用?
- 25. 有没有办法检查反应组件是否被卸载?
- 26. 有没有办法检查是否获得了NSLock?
- 27. 有没有办法检查TLS是否启用?
- 28. 有没有办法检查iCloudDrive是否启动?
- 29. 有没有办法检查用户是否使用JQuery登录?
- 30. 有没有办法检查JS线程是否忙?
检查如果字符串包含唯一有效的字符,中国是不一样的说这是在中国。显然你可以写出无意义的汉字字符串。但我也在思考与中国人分享很多人物的语言(日语,古老的韩国文字)。请参阅CJK统一。我的两分钱。 – 2011-05-23 14:00:58