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

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

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

在信[3]中我们有“。”

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

我到目前为止的进展:

 for (int a = 0; a > i'm confused in this line System.out.println ("it's punctuation"); } else { System.out.println ("just letter"); } } 

你想要检查更多的标点符号而不仅仅是.

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

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

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

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

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

根据您的需要,您可以使用其中之一

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

要么

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

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

第二种模式匹配高达632个unicode字符,包括例如: «»¿¡§''

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

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

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

试试这个方法:Character.isLetter()。 如果字符是字母(az,大写或小写),则返回true;如果字符是数字或符号,则返回false。

例如boolean answer = Character.isLetter(’!’);

答案将等于假。

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