Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检测字符串/用户输入语言_Android - Fatal编程技术网

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谢谢你这么多的黑暗主义者。。。。这就是我需要的。。。我只想知道我是不是英语。。