web-dev-qa-db-fra.com

Vérifier si la chaîne est un caractère de ponctuation

Disons que j'ai un tableau de chaînes qui contient des lettres et des signes de ponctuation

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

Dans la lettre [3] nous avons "."

Comment puis-je vérifier si une chaîne est un caractère de ponctuation? Nous savons qu'il existe de nombreux caractères de ponctuation possibles (,.?! Etc.)

Mes progrès jusqu'ici:

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");
    }
}
10
sephtian

Souhaitez-vous vérifier davantage de ponctuations autres que .?

Si oui, vous pouvez le faire.

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

Voici un moyen de le faire avec des expressions régulières:

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

L’expression régulière \p{Punct} est un motif POSIX représentant un seul caractère de ponctuation .

52
dasblinkenlight

Selon vos besoins, vous pouvez utiliser soit

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

ou

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

Le premier motif correspond aux 32 caractères suivants: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Le second modèle correspond à 632 caractères unicode énormes, comprenant par exemple: «, », ¿, ¡, §, , , , , et .

Fait intéressant, les 32 caractères correspondant au premier motif ne sont pas tous identiques au second . Le second motif correspond pas aux 9 caractères suivants: $, +, <, =, >, ^, `, | et ~ (le premier motif correspond correspond).

Si vous voulez faire correspondre n'importe quel caractère de soit jeu de caractères, vous pouvez faire:

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

Essayez cette méthode: Character.isLetter (). Il renvoie true si le caractère est une lettre (a-z, majuscule ou minuscule), renvoie false si le caractère est numérique ou un symbole.

par exemple. réponse booléenne = Character.isLetter ('!');

la réponse sera égale à false.

1
Jj Tuibeo

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

0
user3258797