检查java中的区域语言

检查java中的区域语言,java,java-8,Java,Java 8,我有一个场景,我必须检查消息是否包含任何区域语言,然后类型应为“2”,或者如果它包含英语(可以包含特殊字符、数字)语言,则类型应为“0” 我试过使用 for (char c: messages.get(0).message().toCharArray()) { if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.DEVANAGARI) {

我有一个场景,我必须检查消息是否包含任何区域语言,然后类型应为“2”,或者如果它包含英语(可以包含特殊字符、数字)语言,则类型应为“0”

我试过使用

for (char c: messages.get(0).message().toCharArray()) {
            if (Character.UnicodeBlock.of(c) == 
                     Character.UnicodeBlock.DEVANAGARI) {
                isHindi = true;
                break;
            }
        }
但在java中,它检查每种特定的语言

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

英语都是ASCII码,所以你可以

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

让我们把它转换成一种方法,它服务得更好

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]+");
    }
}

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

您可以查找任何unicode>127您所说的“特殊字符”是什么意思?你应该进一步澄清你的问题。什么是区域语言?但在这种情况下,我需要检查所有语言,那么多的条件是否会存在,是否有任何简短且强调的解决方案?@ManishMehta你的问题不清楚。您希望指定国家的全部语言吗?我有一个简单的英语问题(可以包含数字和特殊字符),类型为0,其他地区语言的类型为02@ManishMehta什么是特殊字符???@snr所有可能的特殊字符如果还有特殊字符怎么办@彼得Lawrey@ManishMehta这取决于您是否希望将特殊角色视为区域角色。你可以查一下
c>127
@Peter Lawrey谢谢,它帮了我
“我的名字叫glaube nicht,dass das funktioniert”
,是一个
字符串,用德语说我不相信这会起作用。没有任何基于字符的测试会显示该字符串不是英语…@Holger和空字符串在任何语言中都是一样的。单词词典有助于检测非英语单词,尽管词典中可能没有英语单词,例如缩写或地名。