2012-02-25 88 views
9

我想知道是否有方法檢測用戶的輸入是否在希臘語字符集中。檢測字符串/用戶輸入語言

編輯:
只是要更清楚,我需要認識到語言的用戶類型,而不是手機的語言環境。

例如,我的手機是英文的,假設我的鍵盤是俄文的,getDefault()返回「en」,但我需要在那個位置有「ru」。


我不知道這是不是可以出於Android,也許一個辦法盒子的識別字符串的字符代碼,看看是否是英文字母或其他。這點有什麼意思?

我想象像
if character belongs to K then is English
(where K is the essemble of english characters)


解決方案:

最後我用正則表達式來確定字符串是英文。

String pattern = "^[A-Za-z0-9. ]+$"; 
if (string.matches(pattern) 
    // is English 
else 
    // is not English 

如果有人必須提出更好的解決方案,我會將其標記爲答案。

+0

正在運行的IME應符合用戶的語言環境。如果沒有,我不知道是否有什麼 - 作爲一個應用程序開發人員 - 你可以做檢測/糾正它。 – Pedantic 2012-02-25 09:15:31

回答

3
Locale.getDefault().getLanguage().equals("gr") 

在其他的方式:

contains(Charset) 

編輯:

經過一番更多的瀏覽時間,我所遇到的CharsetDetectorCharacter Set Detection

在這裏你有方法detect(),但我不知道如何可以使用最好的。

+0

感謝您的回答。我想這個返回手機的語言環境。我需要鍵盤/輸入字符串語言的當前語言環境。 – Vame 2012-02-25 08:57:16

0

正如Siva所建議的那樣,您可以檢查用戶的語言環境。

在Android中,可以使用Locale.getDefault()來完成此操作。雖然我不會嚴格地將它與2個字母的代碼進行比較,但目前的Android實現是一個2字母的語言代碼,一個下劃線和一個兩個字母的國家代碼。即,de_US將是German as spoken in the United States

這不是行業的發展方向,而是Java 6以來支持最好的模式。Java 7一旦被Android支持,應該支持更具前景的ISO 639 alpha-3代碼。

+0

謝謝。請參閱編輯的問題。 – Vame 2012-02-25 09:08:42

5

您可以使用以下方法,而不是模式匹配:

boolean isEnglish = true; 
for (char c : s.toCharArray()) { 
    if (Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN) { 
    isEnglish = false; 
    break; 
    } 
} 
+0

謝謝你這麼多darkmist ....這是我需要...我只需要知道isEnglish或不.. – praveenb 2012-05-11 08:57:38