Проверьте, является ли строка символом пунктуации

Скажем, у меня есть массив строк, содержащий несколько букв и знаков препинания

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 punctuation");
    } else {
        System.out.println ("just letter");
    }
}

Ответ 1

Вы хотите проверить больше знаков препинания, чем просто . ?

Если это так, вы можете сделать это.

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

Ответ 2

Вот один из способов сделать это с помощью регулярных выражений:

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

Регулярное выражение \p{Punct} представляет собой шаблон POSIX, представляющий один символ пунктуации.

Ответ 3

В зависимости от ваших потребностей вы можете использовать

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

или

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

Первый шаблон соответствует 32 символам: !"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~

Второй шаблон соответствует колоссальным 632 символам юникода, включая, например: «, », ¿, ¡, §, , , , ", " и .

Интересно, что не все 32 символа, совпадающие с первым шаблоном, сопоставляются вторым. Второй шаблон не соответствует следующим 9 символам: $, +, <, =, >, ^, `, | и ~ (которые первый шаблон соответствует).

Если вы хотите совместить любой символ из набора символов, вы можете сделать:

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

Ответ 4

Попробуйте этот метод: Character.isLetter(). Он возвращает true, если символ является буквой (a-z, верхний или нижний регистр), возвращает false, если символ является числовым или символом.

например. boolean answer = Character.isLetter('!');

ответ будет равен false.

Ответ 5

import String... if (string.punctuation.contains(letter [a]))

Ответ 6

function has_punctuation(str) {

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

  return p_found;

}