比方说,我有一个包含一些字母和标点符号的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");
}
}
你要检查的不仅仅是其他更多的标点符号.
?
如果是这样,你可以做到这一点。
String punctuations = ".,:;";//add all the punctuation marks you want.
...
if(punctuations.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。
例如,布尔答案= Character.isLetter( '!');
答案将等于假。
进口字符串...如果(string.punctuation.contains(函[A]))