2012-05-19 25 views
20

replace() veya replaceAll() işlevini kullanarak belirli bir sözcüğü belirli bir sözcükten kaldırmaya çalışıyorum ancak bunlar başka bir kelimenin parçası olsa bile bu sözcüğün tüm yinelemelerini kaldırın!Dizgeden belirli bir sözcüğü kaldırın

Örnek:

String content = "is not like is, but mistakes are common"; 
content = content.replace("is", ""); 

çıkışı:"not like , but mtakes are common"

istenen çıkışı:"not like , but mistakes are common"

nasıl bir dize sadece tam kelimeleri yerini alabilir?

+0

Java etiketine sahipse, tabii ki ** Bu Java ** –

+0

Değiştir mi kullanmanız gerekiyor? Dize ile mi? Değiştirmek için farklı dizeleri aramak zorunda mı? – UNECS

+0

Bütün dizginizin yerine koymak istediğiniz parçayı eklemelisiniz, belki de işinizi yapmak için düzenli bir deyim kullanabilirsiniz –

cevap

36

halt,

String regex = "\\s*\\bis\\b\\s*"; 
content = content.replaceAll(regex, ""); 

değil replace(...)

  • \\b sınırları
  • \\s* sop size kelimesini verir normal ifadeler kullanmak replaceAll(...) kullanmak gerekir unutmayın ne herhangi bir beyaz kadar Kaldırılmakta olan kelimenin her iki tarafında boşluk (bunu kaldırmak isterseniz).
+0

teşekkürler çok yaptı =) –

+1

@MiDoBasha: Rica ederim –

+0

Hala bir sorun kaldı. Eğer cümle “köpek kediydi” ise, bu kod 'is' kelimesinin her iki tarafındaki boşluğu kaldırır ve 'dogcat' yapar. "Content = content.replaceAll (regex," ")' yazıp daha sonra boşlukları kesmek daha iyi olacağını düşünüyorum – Jasir

0

"is" ifadesini "" ile değiştirmeyi deneyebilirsiniz. Önce ve bir sonra bir boşluk ile değiştirilir, tek bir boşlukla değiştirilir.

Güncelleme:

ilk için çalışmasını sağlamak için cümlede, ayrıca başka bir "" için "olma" nın yerini yapmak "dir". İlk ve boş bir dize ile ilk boşluk değiştirilmesi.

+1

cümlede ilk "is" için çalışmaz. –

+0

Büyük harf nedeniyle özel olarak bu davayı ele almanız gerekebileceğinden, belki de birden çok 'replaceAll()' işlevi çalışır? Bir 'replaceAll (" is \. ",". "),' Veya sonuncusunu yakalamak için somesuch ... –

+1

İkiniz de haklısınız. Teşekkür ederim. Bu vakayı içerecek şekilde cevabı güncelledim. Eğer dizge "is" ile biterse, bu durumda da toplam 3'e eklenmesi gerekir. Ayrıca, daha sonra Rob gibi eklendiğinde, büyük harf durumlarının ek replaceAll çağrılarında da düşünülmesi gerekir. –

5

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

+0

Düzenli ifadelerin büyüsünü kullanmak için 'replace (değiştir) (…)' yerine 'replaceAll (...)' dır? –

+0

@HovercraftFullOfEels Üzgünüz test etmedi. Testten sonra düzenlenmiştir. :) – Chip

İlgili konular