Простая замена Groovy с использованием регулярного выражения
Я читал регулярное выражение, и я думал, что это сработает, но он, похоже, не хочет работать. Все, что мне нужно сделать, это удалить ведущий 1 с номера телефона, если он существует.
Итак:
def mphone = 1+555-555-5555
mphone.replace(/^1/, "")
Должен ли этот вывод + 555-555-5555?
Ответы
Ответ 1
Я распознаю две ошибки в коде. Первая из них, вероятно, опечатка: вы не окружаете номер телефона кавычками, поэтому целое число: 1 + 555 - 555 - 5555 = -5554
Кроме того, вы должны использовать replaceFirst
, так как в String нет метода replace
, в котором в качестве первого параметра используется шаблон. Это работает:
def mphone = "1+555-555-5555"
mphone.replaceFirst(/^1/, "")
Ответ 2
replace
- это Java-метод Java String, который заменяет символ другим:
assert "1+555-551-5551".replace('1', ' ') == " +555-55 -555 "
То, что вы ищете, это replaceAll
, который заменит все вхождения регулярного выражения или replaceFirst
, который заменит только первое вхождение:
assert "1+555-551-5551".replaceAll(/1/, "") == "+555-55-555"
assert "1+555-551-5551".replaceFirst(/1/, "") == "+555-551-5551"
^
в вашем регулярном выражении означает, что он должен быть в начале:
assert "1+555-551-5551".replaceAll(/^1/, "") == "+555-551-5551"
поэтому код, который вы отправили, был почти правильным.