Remplacement simple de Groovy à l'aide de regex
j'ai lu regex et j'ai pensé que ça marcherait mais ça ne semble pas vouloir marcher. Tout ce que j'ai à faire, c'est Retirer le numéro de téléphone du numéro de téléphone si celui-ci existe.
Donc:
def mphone = 1+555-555-5555
mphone.replace(/^1/, "")
cette sortie ne devrait-elle pas être +555-555-5555?
2 réponses
je reconnais deux erreurs dans votre code. Le premier est probablement une faute de frappe: vous n'Encerclez pas le numéro de téléphone avec des guillemets donc c'est un entier: 1 + 555 - 555 - 5555 = -5554
vous devez aussi utiliser replaceFirst
car il n'y a pas de méthode replace
dans String prendre un motif comme premier paramètre. Ceci fonctionne:
def mphone = "1+555-555-5555"
mphone.replaceFirst(/^1/, "")
replace
est une méthode java de la chaîne de Java, qui remplacent un caractère par un autre:
assert "1+555-551-5551".replace('1', ' ') == " +555-55 -555 "
Ce que vous cherchez est replaceAll
, qui remplacerait toutes les occurrences d'un regex, ou replaceFirst
, qui permettrait de remplacer la première occurrence uniquement:
assert "1+555-551-5551".replaceAll(/1/, "") == "+555-55-555"
assert "1+555-551-5551".replaceFirst(/1/, "") == "+555-551-5551"
^
dans votre regex signifie que l'on doit être au début:
assert "1+555-551-5551".replaceAll(/^1/, "") == "+555-551-5551"
donc le code que vous avez posté était presque correct.