我正在尝试检测 java 字符串是否包含日文字符。因为字符是否形成语法正确的句子对我来说并不重要,所以我想我会使用正则表达式来匹配字符串中的任何日文字符,如下所示:
package de.cg.javatest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JavaTest {
public static void main(String[] args) {
String aString = "なにげない日々。";
Pattern pat = Pattern.compile("[\\p{InHiragana}]");
Matcher m = pat.matcher(aString);
System.out.println(m.matches()); // false
}
}
但是,打印语句总是显示false
。我尝试将模式更改为
[\\p{IsHiragana}]
[\\p{InHiragana}]+
而且我还手动输入了代码点。有没有我遗漏的东西,或者我必须采取另一种方法?
最佳答案
Matcher.matches
仅当模式与整个字符串匹配时才返回 true。 As Anonymous commented, not all character are Hiragana characters.
通过如下更改模式,您可以检查是否有平假名。
Pattern pat = Pattern.compile(".*\\p{InHiragana}.*");
通过使用 Matcher.find
, 你不需要修改模式。
Pattern pat = Pattern.compile("\\p{InHiragana}"); // [..] is not needed.
Matcher m = pat.matcher(aString);
System.out.println(m.find()); // true
关于java - 检测 Java 字符串中的日语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26075462/