回答
根據所提供的信息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. 有沒有辦法來檢查NSManagedObject是否被釋放?
- 4. 有沒有辦法檢測我是否在文本上懸停?
- 5. 有沒有辦法檢查(文件)句柄是否有效?
- 6. 有沒有辦法來檢查口語命令是否包含Windows語音識別中的某些「關鍵字」?
- 7. 有沒有辦法看多個文本框來查看文本是否改變?
- 8. 有沒有辦法檢查腳本是否由PowerShell ISE運行?
- 9. 有沒有辦法來檢查bean是否在spring上下文中定義?
- 10. 是否有一種語言具有這種簡化的語法?
- 11. 有沒有辦法使用一種針對多種語言的ANTLR語法?
- 12. 有沒有辦法檢查觀察者是否在聽某些NSNotification?
- 13. Facebook:有沒有辦法檢查我是否擁有某些權限?
- 14. 如何檢查文本是否具有某種格式?
- 15. 有沒有什麼辦法來檢查視圖是否是一個編輯文本或不是在Android?
- 16. 有沒有辦法改變這種語言的變量值?
- 17. 可可 - 有沒有辦法檢查NSURLConnection是否存在緩存?
- 18. 有沒有辦法在.NET中檢查Bitmap是否爲空?
- 19. 有沒有辦法檢查代碼是否在TransactionScope中執行?
- 20. 有沒有辦法檢查Generic類是否存在字段?
- 21. 有沒有辦法檢查連接標識是否存在?
- 22. 有沒有辦法檢查子進程是否仍在運行?
- 23. 有沒有辦法檢查回發是否正在進行?
- 24. 有沒有辦法檢查我的代理是否在線?
- 25. 如何檢查資源是否翻譯爲某種語言
- 26. 有沒有什麼辦法可以檢查在搜索視圖中輸入的字詞是用哪種語言
- 27. 有沒有辦法檢查一個TextView的文本是否被截斷
- 28. 有沒有辦法來檢查變量是否在Java中定義?
- 29. 有沒有辦法來檢查一個元素是否有鼠標懸停?
- 30. 有沒有辦法通過monkeyrunner來檢查模擬器是否是控制器?
檢查如果字符串包含唯一有效的字符,中國是不一樣的說這是在中國。顯然你可以寫出無意義的漢字字符串。但我也在思考與中國人分享很多人物的語言(日語,古老的韓國文字)。請參閱CJK統一。我的兩分錢。 – 2011-05-23 14:00:58