有没有办法检查unicode文本是否是某种语言?我将从需要验证的用户那里得到的文本是一个汉字。有没有办法检查这个?根据unicode网站上提供的信息,您可以找到中文或任何其他语言的块,然后实现一个解析器来检查单词是否在范围内。likepublicboolIsChinese(stringtext){returntext.Any(c=>c>=0x20000&&c注意,为了方便参考,UnicodeConsortium在这里提供了UnicodeHàn(汉)数据库(Unihan)的搜索接口。I上面提供的数据库链接显示了您可以使用正则表达式匹配支持的命名块的字符:privatestaticreadonlyRegexcjkCharRegex=newRegex(@"p{IsCJKUnifiedIdeographs}");publicstaticboolIsChinese(thischarc){returncjkCharRegex.IsMatch(c.ToString());}然后你可以使用:韩文字符编码在一起,有几个范围。https://en.wikipedia.org/wiki/CJK_Compatibility为简单起见,这里是一个检测所有CJK范围的代码示例:publicboolIsChinese(stringtext){returntext.Any(c=>(uint)c>=0x4E00&&(uint)c只是检查字符以查看代码点是否在所需范围内。比如看到这个问题:汉字在Unicode中的全范围是什么?根据维基百科(https://en.wikipedia.org/wiki/CJK_Compatibility),有几种字符代码调音符。这是我根据上面的链接检测汉字的方法(F#中的代码,但可以轻松转换)letisChinese(text:string)=text|>Seq.exists(func->letcode=intc(code>=0x4E00&&code=0x3400&&code=0x3400&&code=0x20000&&code=0x2E80&&code=0xF900&&code=0xFE30&&code=0xF2800&&code在unicode中,中文,日文和韩文字符被编码在一起。请访问此FAQ:http://www.unicode.org/faq/han_cjk.html中文字符分布在几个块。访问这个wiki:https://en.wikipedia.org/wiki/CJK_Unified_Ideographs你会发现在unicode站点有几个cjk字符那里的图表。为简单起见,您可以使用汉字最小和最大范围:检查0x4e00和0x2fa1f。这对我有用:varcharArray=text.ToCharArray();varisChineseTextPresent=false;foreach(varcharacterincharArray){varcat=char.GetUnicodeCategory(character);if(cat!=UnicodeCategory.OtherLetter){继续;}isChineseTextPresent=true;休息;您需要查询Unicode字符数据库,其中包含每个Unicode字符的信息……C#中可能有一个实用函数可以为您执行此操作。否则,您可以从互联网上下载它。以上是C#学习教程:有没有办法检查unicode文本是否是某种语言的?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
