检查Java中的区域语言

时间:2018-08-09 11:08:53

标签: java java-8

我有一种情况,我必须检查消息是否包含任何区域性语言,然后类型应为“ 2”,或者如果它包含英语(可以包含特殊字符,数字),则类型应为“ 0”。 / p>

我尝试使用

for (char c: messages.get(0).message().toCharArray()) {
            if (Character.UnicodeBlock.of(c) == 
                     Character.UnicodeBlock.DEVANAGARI) {
                isHindi = true;
                break;
            }
        }

但是在Java中,它会检查每种特定的语言。

我想为此编写通用代码。 谢谢

2 个答案:

答案 0 :(得分:1)

英语全为ASCII,因此您可以做到

if (c > 127 && Character.isLetterOrDigit(c)) // non English letter or digit.

答案 1 :(得分:1)

让我们将其转换为方法,这样做会更好。

class IndianTest {
    public static void main(String args[])
    {
        String x = "यर";
        if (textContainsIndian(x)) {
            System.out.println("indian");
        } else if (isEnglish(x)) {
            System.out.println("english");
        } else
            System.out.println("another language");

    }

    public static boolean textContainsIndian(String text) {
        for (char charac : text.toCharArray()) {
            if (Character.UnicodeBlock.of(charac) == Character.UnicodeBlock.DEVANAGARI) {
                return true;
            }
        }
        return false;
    }

    public static boolean isEnglish(String name) {
        return name.matches("[a-zA-Z0-9]+");
    }
}

现在,您可以根据需要修改代码。