首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测字符串/用户输入语言

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

Stack Overflow用户
提问于 2012-02-25 08:42:56
回答 3查看 5.7K关注 0票数 16

我想知道是否有一种方法来检测用户的输入是否在希腊语字符集中。

编辑:

为了更清楚,我需要识别用户类型的语言,而不是手机的区域设置。

例如,我的手机是英文的,假设我的键盘是俄文的,getDefault()返回"en",但我需要有"ru“。

我不知道这是从android的盒子里得到的,也许是一种检测字符串字符代码的方法,看看是用英文字母表还是用另一个字母。对此有什么看法吗?

我想就像

if character belongs to K then is English

(where K is the essemble of english characters)

解决方案:

最后,我使用正则表达式来确定字符串是否是英文的。

代码语言:javascript
复制
String pattern = "^[A-Za-z0-9. ]+$";
if (string.matches(pattern) 
   // is English
else
   // is not English

如果有人要提出更好的解决方案,我会把它标记为答案。

EN

回答 3

Stack Overflow用户

发布于 2012-02-25 10:36:15

您可以使用以下方法来代替模式匹配:

代码语言:javascript
复制
boolean isEnglish = true;
for ( char c : s.toCharArray() ) {
  if ( Character.UnicodeBlock.of(c) != Character.UnicodeBlock.BASIC_LATIN ) {
    isEnglish = false;
    break;
  }
}
票数 11
EN

Stack Overflow用户

发布于 2012-02-25 08:50:42

代码语言:javascript
复制
Locale.getDefault().getLanguage().equals("gr")

以其他方式:

代码语言:javascript
复制
 contains(Charset) 

编辑:

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

这里有方法detect(),但不确定如何最好地利用它。

票数 2
EN

Stack Overflow用户

发布于 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代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9442609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档