检查字符串是否为标点字符

2022-09-01 23:58:57

假设我有一个包含一些字母和标点符号的字符串数组

String letter[] = {"a","b","c",".","a"};

在字母[3]中,我们有“.”

如何检查字符串是否为标点符号字符?我们知道有许多可能的标点符号字符(,.?!等)。

到目前为止,我的进步:

for (int a = 0; a < letter.length; a++) {
    if (letter[a].equals(".")) { //===>> i'm confused in this line
        System.out.println ("it's punctuation");
    } else {
        System.out.println ("just letter");
    }
}

答案 1

以下是使用正则表达式执行此操作的一种方法:

if (Pattern.matches("\\p{Punct}", str)) {
    ...
}

正则表达式是表示单个标点字符的 POSIX 模式。\p{Punct}


答案 2

根据您的需要,您可以使用

Pattern.matches("\\p{Punct}", str)

Pattern.matches("\\p{IsPunctuation}", str)

第一个模式与以下 32 个字符匹配:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

第二种模式匹配多达 632 个 unicode 字符,例如:、、和 。«»¿¡§

有趣的是,并非所有与第一个模式匹配的 32 个字符都与第二个模式匹配。第二个模式与以下 9 个字符不匹配:、、、、和(第一个模式匹配)。$+<=>^`|~

如果要匹配一字符集中的任何字符,可以执行以下操作:

Pattern.matches("[\\p{Punct}\\p{IsPunctuation}]", str)