Nas*_*loo 18
根据unicode网站上提供的信息,您可以找到中文或任何其他语言的块,然后实现解析器以检查单词是否在范围内或不是.就像
public bool IsChinese(string text)
{
return text.Any(c => c >= 0x20000 && c <= 0xFA2D);
}
Run Code Online (Sandbox Code Playgroud)
注意
作为一个方便的参考,Unicode Consortium 在这里提供了UnicodeHàn(汉)数据库(Unihan)的搜索界面.
我上面提供的数据库链接显示了字符
您可以使用正则表达式与支持的命名块匹配:
private static readonly Regex cjkCharRegex = new Regex(@"\p{IsCJKUnifiedIdeographs}");
public static bool IsChinese(this char c)
{
return cjkCharRegex.IsMatch(c.ToString());
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用:
if (sometext.Any(z=>z.IsChinese()))
DoSomething();
Run Code Online (Sandbox Code Playgroud)
正如这里提到的几个人一样,在unicode中,中文,日文和韩文字符被编码在一起,并且有几个范围. https://en.wikipedia.org/wiki/CJK_Compatibility
为简单起见,这是一个检测所有CJK范围的代码示例:
public bool IsChinese(string text)
{
return text.Any(c => (uint)c >= 0x4E00 && (uint)c <= 0x2FA1F);
}
Run Code Online (Sandbox Code Playgroud)