我想知道是否有办法检测用户的输入是否在希腊字符集中。
修改
为了更清楚,我需要识别用户输入的语言而不是手机的语言环境。
例如,我的手机是英文的,假设我的键盘是俄语,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 :(得分:7)
您可以使用以下方法代替模式匹配:
boolean isEnglish = true;
for ( char c : s.toCharArray() ) {
if ( Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN ) {
isEnglish = false;
break;
}
}
答案 1 :(得分:3)
Locale.getDefault().getLanguage().equals("gr")
以其他方式:
contains(Charset)
修改强>
经过一段时间的浏览后,我遇到了CharsetDetector和Character Set Detection。
这里有方法detect()
,但我不确定如何最好地利用它。
答案 2 :(得分:0)
正如Siva建议的那样,您可以检查用户的语言环境。
在Android中,可以使用Locale.getDefault()完成此操作。虽然我不会严格地将它与2个字母的代码进行比较,但是目前的Android实现它是一个2个字母的语言代码,一个下划线和一个双字母的国家代码。也就是说,de_US
将是German as spoken in the United States
。
这不是行业的发展方式,而是Java 6中支持度最高的模式。一旦得到Android支持,Java 7应该支持更加面向未来的ISO 639 alpha-3代码。