我想知道是否有一种方法来检测用户的输入是否在希腊语字符集中。
编辑:
为了更清楚,我需要识别用户类型的语言,而不是手机的区域设置。
例如,我的手机是英文的,假设我的键盘是俄文的,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如果有人要提出更好的解决方案,我会把它标记为答案。
发布于 2012-02-25 10:36:15
您可以使用以下方法来代替模式匹配:
boolean isEnglish = true;
for ( char c : s.toCharArray() ) {
if ( Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN ) {
isEnglish = false;
break;
}
}发布于 2012-02-25 08:50:42
Locale.getDefault().getLanguage().equals("gr")以其他方式:
contains(Charset) 编辑:
经过一段时间的浏览之后,我遇到了CharsetDetector和字符集检测。
这里有方法detect(),但不确定如何最好地利用它。
发布于 2012-02-25 09:03:39
正如Siva建议的那样,您可以检查用户的区域设置。
在安卓系统中,这可以通过使用Locale.getDefault()来实现。虽然我不会严格地把它比作一个2字母的代码,但目前的Android实现是一个2字母的语言代码、一个下划线和一个两个字母的国家代码。de_US将是German as spoken in the United States。
这不是行业发展的方式,但它是Java6.JAVA 7中最受支持的模式,一旦得到安卓的支持,就应该支持更有前途的ISO 639 alpha-3代码。
https://stackoverflow.com/questions/9442609
复制相似问题