J'ai lu des expressions régulières et je pensais que cela fonctionnerait, mais il ne semble pas vouloir fonctionner. Tout ce que je dois faire est de retirer le premier 1 d'un numéro de téléphone s'il existe.
Alors:
def mphone = 1+555-555-5555
mphone.replace(/^1/, "")
Cette sortie ne devrait-elle pas + 555-555-5555?
Je reconnais deux erreurs dans votre code. La première est probablement une faute de frappe: vous n'entourez pas le numéro de téléphone de guillemets, c'est donc un entier: 1 + 555 - 555 - 5555 = -5554
De plus, vous devez utiliser replaceFirst
car il n'y a pas de méthode replace
dans String prenant un Pattern comme premier paramètre. Cela marche:
def mphone = "1+555-555-5555"
mphone.replaceFirst(/^1/, "")
replace
est une Java méthode de la chaîne Java, qui remplace un caractère par un autre:
assert "1+555-551-5551".replace('1', ' ') == " +555-55 -555 "
Ce que vous recherchez est replaceAll
, qui remplacerait toutes les occurrences d'une expression régulière, ou replaceFirst
, qui remplacerait uniquement la première occurrence:
assert "1+555-551-5551".replaceAll(/1/, "") == "+555-55-555"
assert "1+555-551-5551".replaceFirst(/1/, "") == "+555-551-5551"
Le ^
dans votre expression régulière signifie que celui-ci doit être au début:
assert "1+555-551-5551".replaceAll(/^1/, "") == "+555-551-5551"
donc le code que vous avez publié était presque correct.