web-dev-qa-db-fra.com

Remplacez tous les caractères non dans la plage (chaîne Java)

Comment remplacez-vous tous les caractères d'une chaîne qui ne correspondent pas à un critère. J'ai des problèmes spécifiquement avec le non-opérateur.

Plus précisément, j'essaie de supprimer tous les caractères qui ne sont pas un chiffre, j'ai essayé cela jusqu'à présent:

String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", "");  // produces: "--" 
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"
26
Chris Dutrow

Pour expliquer: le début d'une classe de caractères annulera cette classe, mais il doit être à l'intérieur de la classe pour que cela fonctionne. Le même caractère en dehors d'une classe de caractères est l'ancre pour le début de la chaîne/ligne.

Vous pouvez essayer cela à la place:

"[^0-9]"
44
tangens

Voici une feuille de triche rapide de la définition de la classe de caractères et de la manière dont il interagit avec certains caractères métagènes de regex.

  • [aeiou] - correspond exactement à une voyelle minuscule
  • [^aeiou] - correspond à un caractère qui N'est pas une voyelle minuscule (nié classe de caractères)
  • ^[aeiou] - correspond à une voyelle minuscule ancrée au début de la ligne
  • [^^] - correspond à un caractère qui n'est pas un caret/'^'
  • ^[^^] - correspond à un personnage qui n'est pas caret au début de la ligne
  • ^[^.]. - correspond à tout sauf une période littérale, suivie de "n'importe quel" caractère, au début de la ligne
  • [a-z] - correspond exactement à un caractère dans la touche plage de 'a' à 'z' (I.e. toutes les lettres minuscules)
  • [az-] - correspond à un 'a', a 'z' ou a '-' (Dash littéral)
  • [.*]* - correspond à une séquence contiguë (éventuellement vide) de points et d'astérisques
  • [aeiou]{3} - correspond à 3 voyelles minuscules consécutives (toutes pas nécessairement la même voyelle)
  • \[aeiou\] - correspond à la chaîne "[aeiou]"

Les références

Questions connexes

27