检测字符串/用户输入语言

我想知道是否有办法检测用户的输入是否在希腊字符集中。

编辑:
为了更清楚,我需要识别用户输入的语言而不是手机的语言环境。

例如,我的手机是英文的,假设我的键盘是俄语,getDefault()返回“en”,但我需要在那个时候有“ru”。

我不知道这是否可以从android开箱即用,也许是一种检测字符串字符代码的方法,看看是英文字母还是其他字母。 这有什么意义吗?

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

解:

最后我用正则expression式来确定字符串是否是英文的。

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

如果有人必须提出更好的解决方案,我会将其标记为答案。

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

 boolean isEnglish = true; for ( char c : s.toCharArray() ) { if ( Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN ) { isEnglish = false; break; } } 
 Locale.getDefault().getLanguage().equals("gr") 

换句话说:

  contains(Charset) 

编辑:

经过一段时间的浏览,我遇到了CharsetDetector和字符集检测 。

这里你有方法detect()但不知道如何最好地利用它。

正如Siva建议的那样,您可以检查用户的语言环境。

在Android中,这可以通过使用Locale.getDefault()来完成。 虽然我不会严格地将它与2个字母的代码进行比较,但是目前的Android实现有两个字母的语言代码,一个下划线和两个字母的国家代码。 也就是说, de_US将是German as spoken in the United States

这不是行业的发展方式,而是Java 6中支持度最高的模式。一旦得到Android的支持,Java 7应该支持更具前瞻性的ISO 639 alpha-3代码。