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?

22
demandé sur cdeszaq 2012-03-20 18:44:27

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/, "")
35
répondu Esteban 2012-11-18 19:11:54

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.

18
répondu Antoine 2012-03-20 15:01:29