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

时间:2012-12-18 02:30:54

标签: java string-comparison punctuation

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

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

7 个答案:

答案 0 :(得分:55)

以下是使用正则表达式的一种方法:

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

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

答案 1 :(得分:20)

您是否要检查除.以外的更多标点符号?

如果是这样,你可以这样做。

String punctuations = ".,:;";//add all the punctuation marks you want.
...
if(punctuations.contains(letter[a]))

答案 2 :(得分:11)

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

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

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

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

第二个模式匹配高达632个unicode字符,例如:«»¿¡§,{{ 1}},

有趣的是,并非所有与第一个模式匹配的32个字符都与第二个匹配。第二种模式匹配以下9个字符:$+<=,{{ 1}},>^`(第一个模式 匹配)。

如果你想匹配 字符集中的任何字符,你可以这样做:

|

答案 3 :(得分:1)

尝试此方法:Character.isLetter()。如果字符是字母(a-z,大写或小写),则返回true;如果字符是数字或符号,则返回false。

e.g。 boolean answer = Character.isLetter('!');

答案将等于假。

答案 4 :(得分:0)

我尝试过正则表达式:“[\\p{Punct}]”或“[\\p{IsPunctuation}]”或没有 [],它不能按预期工作。

我的字符串是: How are you?,甚至"How are you?", he asked.

然后调用:my_string.matches(regex); 但它似乎只识别字符串是否只有一个标点符号(例如“?”、“.”、...)。

只有这个正则表达式对我有用:“(.*)[\\p{P}](.*)”,它将包含标点符号的所有前面和后面的字符,因为 matches() 需要匹配所有句子。

答案 5 :(得分:-1)

导入字符串 ... if(string.punctuation.contains(letter [a]))

答案 6 :(得分:-2)

function has_punctuation(str) {

  var p_found = false;
  var punctuations = '`~!@#$%^&*()_+{}|:"<>?-=[]\;\'.\/,';
  $.each(punctuations.split(''), function(i, p) {
    if (str.indexOf(p) != -1) p_found = true;
  });

  return p_found;

}