Проверьте, является ли строка символом пунктуации
предположим, у меня есть строковый массив, который содержит некоторые буквы и знаки препинания
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");
}
}
5 ответов
вы хотите проверить больше знаков препинания, чем просто .
?
Если это так, вы можете сделать это.
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 символам юникода, в том числе, например: «
, »
, ¿
, ¡
, §
, ¶
, ‘
, ’
, “
, ”
и ‽
.
интересно, что не все 32 символа соответствуют первый шаблон соответствует второму. Второй паттерн делает не сопоставьте следующие 9 символов:$
, +
, <
, =
, >
, ^
, `
, |
и ~
(который первый шаблон тут матч).
если вы хотите соответствовать любому символу из или набор символов, вы могли бы сделать:
Pattern.matches("[\p{Punct}\p{IsPunctuation}]", str)
попробуйте этот метод: характер.isLetter(). Он возвращает true, если символ является буквой (a-z, верхний или нижний регистр), возвращает false, если символ является числовым или символом.
например, логический ответ = характер.isLetter('!');
ответ будет равен false.
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;
}