java - 检测 Java 字符串中的日语字符

标签 java regex string

我正在尝试检测 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/

相关文章:

java - Google App Engine 简单应用程序已创建并在本地运行。但我无法部署到 App Engine

java - Oracle SQL - 计算并发事件数

java - 列出的哪个 .jar 包含类 'com.twitter.finagle.stats.ExceptionStatsHandler' ?

c - 返回 C 中的字符串数组

c - 在C中将字符串插入字符串

java - 如何判断是否已使用 BufferedReader 读入空行?

regex - 在 Linux 中使用正则表达式搜索/Grep 仅公共(public) IP 地址

python - 使用 df ['foo' 访问数据] 模式搜索 python 缺少数据

python - re.findall 多行 python

java 字符串删除空格并添加字母