我有一个场景,我必须检查消息是否包含任何区域语言,那么类型应该是"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]+");
}
}
现在,您可以根据需要修改代码。