我一直在阅读正则表达式,我认为这会起作用,但它似乎不想工作。我需要做的就是将电话号码中的前导1删除(如果存在)。
所以:
def mphone = 1+555-555-5555
mphone.replace(/^1/, "")
这个输出不应该+ 555-555-5555?
答案 0 :(得分:41)
我在代码中发现了两个错误。第一个可能是一个错字:你不是用引号括起电话号码所以它是一个整数:1 + 555 - 555 - 5555 = -5554
此外,您应该使用replaceFirst
,因为String中没有方法replace
将Pattern作为第一个参数。这有效:
def mphone = "1+555-555-5555"
mphone.replaceFirst(/^1/, "")
答案 1 :(得分:27)
replace
是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"
所以你发布的代码几乎是正确的。