Android 检测字符串/用户输入语言
我想知道是否有一种方法可以检测用户的输入是否为希腊文字符集 编辑:Android 检测字符串/用户输入语言,android,Android,我想知道是否有一种方法可以检测用户的输入是否为希腊文字符集 编辑: 更清楚地说,我需要识别用户输入的语言,而不是手机的语言环境例如,我的手机是英语的,假设我的键盘是俄语的,getDefault()返回“en”,但此时我需要输入“ru”。 我不知道android是否提供了现成的功能,这可能是一种检测字符串字符代码的方法,看看是用英文字母表还是其他字母表。关于这一点有什么看法吗?我想象类似于如果字符属于K,那么就是英语(其中K是英语字符的符号) 解决方案: 最后,我使用正则表达式确定字符串是否为英
更清楚地说,我需要识别用户输入的语言,而不是手机的语言环境
例如,我的手机是英语的,假设我的键盘是俄语的,getDefault()返回“en”,但此时我需要输入“ru”。
我不知道android是否提供了现成的功能,这可能是一种检测字符串字符代码的方法,看看是用英文字母表还是其他字母表。关于这一点有什么看法吗?
我想象类似于
如果字符属于K,那么就是英语
(其中K是英语字符的符号)
解决方案:
最后,我使用正则表达式确定字符串是否为英文。
String pattern = "^[A-Za-z0-9. ]+$";
if (string.matches(pattern)
// is English
else
// is not English
如果必须有人提出更好的解决方案,我会将其标记为答案
Locale.getDefault().getLanguage().equals("gr")
换句话说:
contains(Charset)
编辑:
在浏览了一段时间之后,我遇到了一些问题
这里您有方法
detect()
,但不确定如何最好地利用它。正如Siva所建议的,您可以检查用户的区域设置
在Android中,这可以通过使用。虽然我不会严格地将其与两个字母的代码进行比较,但当前的Android实现将其与两个字母的语言代码、下划线和两个字母的国家代码进行比较。也就是说,de_US
将是美国所说的德语
这不是行业发展的方式,而是自Java6以来最受支持的模式。Java 7,一旦被Android支持,就应该支持更加经得起未来考验的代码。您可以使用以下方法代替模式匹配:
boolean isEnglish = true;
for ( char c : s.toCharArray() ) {
if ( Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN ) {
isEnglish = false;
break;
}
}
谢谢你的回答。我猜这个会返回手机的区域设置。我需要键盘/输入字符串语言的当前区域设置。运行的IME应符合用户的区域设置。如果没有,我不知道作为一个应用程序开发人员,你是否可以做些什么来检测/纠正它。这就是我到目前为止一直在寻找的,谢谢@Vame it helped谢谢你这么多的黑暗主义者。。。。这就是我需要的。。。我只想知道我是不是英语。。