2012-03-20 24 views
16

Düzenli ifadeler okuyordum ve bunun işe yarayacağını düşündüm ama çalışmak istemiyor gibi görünüyor. Tek yapmam gereken, varsa 1 numaralı telefon numarasını kesmek.Simple Groovy, regex kullanarak değiştir

Yani:

def mphone = 1+555-555-5555 
mphone.replace(/^1/, "") 

olmamalı bu çıkışı + 555-555-5555?

+0

"def mphone =" 1 + 555-555-5555 "(tırnak işaretleri) – Antoine

cevap

26

Kodunuzdaki iki hatayı tanıyorum. Birincisi muhtemelen bir yazım hatası şudur: bir tamsayı yüzden tırnak ile telefon numarasını çevreleyen değildir: 1 + 555-555 - hiçbir yöntem replace var çünkü Ayrıca = -5.554

5555, alıyorsun Dize replaceFirst kullanmalıdır İlk parametre olarak bir Desen. Bu çalışır:

def mphone = "1+555-555-5555" 
mphone.replaceFirst(/^1/, "") 
+15

İyi bir yanıt verdiniz. Bir uyarı, unutma Strings immutable. Mphone: 'mphone = mphone.replaceFirst (/^1 /, "") ' –

+0

@Johnathon harika yorumunu yeniden atadığınızdan emin olun, dönüş değeri olarak son satırı kullanırdım ama aynı zamanda yanlış olabileceğini düşünmedim * yerinde * değiştirme – Esteban

+0

Done @ChrLipp, bana bildirdiğiniz için teşekkürler! – Esteban

17

replace başka bir karakteri değiştirmek Java'nın String java Yöntemi şöyledir:

assert "1+555-551-5551".replace('1', ' ') == " +555-55 -555 " 

Eğer replaceAll olduğu arıyorsun, bir regex tüm oluşumları yerine geçecek,

assert "1+555-551-5551".replaceAll(/1/, "") == "+555-55-555" 
assert "1+555-551-5551".replaceFirst(/1/, "") == "+555-551-5551" 

senin regex ^ t anlamı: ya replaceFirst, bu sadece ilk geçtiği yerini alacak şapka, başlangıçta, yayınladığınız kodun doğru olması için

assert "1+555-551-5551".replaceAll(/^1/, "") == "+555-551-5551" 

olmalıdır.