检查字符串是否是标点字符
假设我有一个包含一些字母和标点符号的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; }