首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检测字符串是否至少包含特定语言的一个字符?

如何检测字符串是否至少包含特定语言的一个字符?
EN

Stack Overflow用户
提问于 2016-08-30 11:17:21
回答 3查看 2.7K关注 0票数 2

我正在创建一个Android应用程序,其中我有一个字符串。我想检查这个字符串是否包含至少一个属于印地语的字符。

字符串在哪种语言中并不重要,但如果它至少有一个印地语字符,则需要调用我的函数。

这样做的方法之一是将字符串中的每个字符与所有印地语单曲进行比较。但这是不是太费时了?例如,字符串的50个字符和50个unicode将以2500种比较结束。

什么是解决这一问题的最佳方案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-30 11:42:24

我认为这两种方法

方法1

代码语言:javascript
运行
复制
 boolean isHindi = false;
 for (char c: myString.toCharArray()) {
     if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.DEVANAGARI) {
         isHindi = true;
         break;
     }
 }

方法2

代码语言:javascript
运行
复制
    boolean isHindi = false;
    for (int k = 0; k < Character.codePointCount(myString, 0, myString.length()); k++) {
        int c = myString.codePointAt(k);
        if (c >= 0x0900 && c <= 0x097F) {  //Hindi uni-codes are within this range
            isHindi = true;
            break;
        }
    }
票数 6
EN

Stack Overflow用户

发布于 2019-01-08 23:27:22

如果您使用的是java-8,您可以:

代码语言:javascript
运行
复制
boolean isHindi = 
    myString.chars().anyMatch(c -> Character.UnicodeBlock.of(c) == Character.UnicodeBlock.DEVANAGARI);
票数 0
EN

Stack Overflow用户

发布于 2020-03-16 04:24:59

您也可以进行正则匹配。下面是一个示例代码

代码语言:javascript
运行
复制
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HindiDetctionDemo {
    public static void main(String args[]) {
        Pattern hindiFirstCharMatchPattern = Pattern.compile("[\\u0900-\\u097F].*");
        Matcher hindiFirstCharMatcher = hindiFirstCharMatchPattern.matcher("ok ");
        if(hindiFirstCharMatcher.matches()) {
            System.out.println("found");
        } else {
            System.out.println("could not find.");
        }
    }
}

关于正则表达式的注记

[\u0900-\u097F]是印地语字符的匹配器。

.*被追加,以便匹配在第一次匹配之后停止。

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

https://stackoverflow.com/questions/39226036

复制
相关文章

相似问题

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