我正在設計一個英文和中文兩個Android應用程序。我想知道用戶是否輸入英文文本或中文文本?有沒有什麼辦法可以在android中檢查?如何在android中檢查給定的文本是英文還是中文?
回答
如果要檢測輸入字符串是否包含中國一樣的特性(S)(CJK)時,以下可能會對您有所幫助:
public static boolean isCJK(String str){
int length = str.length();
for (int i = 0; i < length; i++){
char ch = str.charAt(i);
Character.UnicodeBlock block = Character.UnicodeBlock.of(ch);
if (Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(block)||
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS.equals(block)||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A.equals(block)){
return true;
}
}
return false;
}
如果你想獲得設備的默認語言Locale.getDisplayLanguage()應該給你用戶的語言。
否則,this可能會幫助你。
編輯:
我不知道,但谷歌翻譯做到這一點。當用戶鍵入內容時,它會自動檢測語言。所以,Google Translate API應該能夠爲你做到這一點。
EDIT2
是的,它用一個簡單的HTTPGET呢,here是鏈接。
其實我公司有它自己的英文和中文鍵盤。即使設備語言被更改,用戶也可以使用這兩種語言。所以這不會爲我工作 –
如果您使用自己的鍵盤,您是否應該很容易檢測到哪個鍵盤被選中? –
實際上檢測鍵盤不是問題。我創建了一個用戶存儲10條消息的問候應用程序。有些是英文的,有些是中文的。取決於中文信息是按下的還是英文的,我想顯示不同的輸出。那爲什麼我要識別語言 –
String language = Locale.getDefault().getDisplayLanguage(); will give your default language of your device
System.out.println("My locale::"+Locale.getDefault().getDisplayLanguage());
it will print like My locale:: english;
現在你必須檢查
if(language.equalignorecase("engish")){
// do your stuff for english
}else{
// do your stuff for chienese
}
這是爲了檢測android中使用的語言。我想知道我的活動中的特定語言類型。例如:Text1.IsThisEnglishOrChinese()..就像這樣 –
接受的答案是不完整或過時的d。以下是一些可用於測試角色是否爲CJK表意文字的方法。我的更完整的答案是here。
由於許多中文字符位於較高的代碼層面,因此最好使用代碼點而不是charAt
(如在接受的答案中)。使用charAt
只會給你一個代理對,而不是實際的中文字符。因此,通過一個String循環更好的辦法是像this:
final int length = myString.length();
for (int offset = 0; offset < length;) {
final int codepoint = Character.codePointAt(myString, offset);
// use codepoint here
offset += Character.charCount(codepoint);
}
和測試碼點可以通過以下方式之一來完成。
private boolean isCJK(int codepoint) {
Character.UnicodeBlock block = Character.UnicodeBlock.of(codepoint);
return (Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(block)||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A.equals(block) ||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B.equals(block) ||
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C.equals(block) || // api 19, remove these if supporting lower versions
Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D.equals(block) || // api 19
Character.UnicodeBlock.CJK_COMPATIBILITY.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_FORMS.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS.equals(block) ||
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT.equals(block) ||
Character.UnicodeBlock.CJK_RADICALS_SUPPLEMENT.equals(block) ||
Character.UnicodeBlock.CJK_STROKES.equals(block) || // api 19
Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION.equals(block) ||
Character.UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS.equals(block) ||
Character.UnicodeBlock.ENCLOSED_IDEOGRAPHIC_SUPPLEMENT.equals(block) || // api 19
Character.UnicodeBlock.KANGXI_RADICALS.equals(block) ||
Character.UnicodeBlock.IDEOGRAPHIC_DESCRIPTION_CHARACTERS.equals(block));
}
或爲API 19
private boolean isCJK(int codepoint) {
return Character.isIdeographic(codepoint);
}
或爲API 24
private boolean isCJK(int codepoint) {
return (Character.UnicodeScript.of(codepoint) == Character.UnicodeScript.HAN);
}
- 1. 用於檢查非英文字符是中文還是日文的Python腳本
- 2. 檢查特殊字符是中文還是英文
- 3. 如何查找數據是英文還是中文
- 4. 檢測文本的語言是PDF還是DOC文件中的英文
- 5. 如何檢查給定的字符串是否是Scala中的英文單詞?
- 6. 如何檢查文本框中輸入的文本是字母還是數字
- 7. 檢查選定的文本是否在給定的CSS類中?
- 8. 如何檢查輸入字段的文本是「是」還是「否」?
- 9. C# - 檢查給定的url是文件還是目錄?
- 10. 如何確定給定路徑是文件還是文件夾?
- 11. 如何在文本,文檔,PDF文件中識別文本是英文的?
- 12. 檢測文本是否爲非英文
- 13. 如何檢查給定文件是否是C++中的有效視頻文件?
- 14. PostgreSQL中的全文索引(不是'英文'還是'簡單')?
- 15. 如何檢查插入點是粗體文本還是普通文本
- 16. 如何檢查文本是1字節還是2字節?
- 17. 如何檢查目錄是文件還是文件夾?
- 18. PHP如何檢查文件是mp3還是圖像文件?
- 19. 如何使用Javascript知道網頁是英文還是非英文的?
- 20. 如何檢查MATLAB中的文本文件是否存在
- 21. 如何檢查文件是純文本?
- 22. 檢查輸入的文本是否僅使用英文字母
- 23. 我可以確定數據是英語還是中文?
- 24. 確定文本是否爲英文?
- 25. 確定文本是否爲英文
- 26. MySQL如何檢查值是整數還是字段中的文本
- 27. 如何檢查文本文件是否在gedit中打開
- 28. 如何檢查單詞是否在cocoa-touch的英文字典中定義?
- 29. 檢查文本視圖是否在android
- 30. 這是我如何檢查特定文本文件中的文件擴展名?
使用TextWatcher您的EditText – Ameer
從輸入每次取焦,看看unicode的點的範圍相匹配對於中文字符(http://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode) –