2011-08-17 15 views
8

Giriş dizesi içeren bir programım var. '<' ve '>' karakterlerinin içindeki herhangi bir şeyi silmek istiyorum. Örneğin dize'<' to '>' sayfasındaki tüm alt dizeleri nasıl kaldırılır

"P.S.<!-- 
BODY 
    { 
    color:white; 
    background-color: transparent; 
    font-family:sans-serif; 
    } 
--> Hello how are you today?" 

Ben çıkış dize sadece "P.S. Hello how are you today?" içermesini istediğiniz derse. Java'da bunu yapmanın basit bir yolu var mı? Bunun anlamı nedir

newstr = str.replaceAll("<[^>]*>", ""); 

< ile başlayan her alt dize, > olmayan karakterlerin sonra herhangi bir sayı ve ardından karakterini > bulmaktır: Teşekkür

+1

ve "<"/">" kombinasyonu sadece bir veya birçok kez vardır ? –

+1

"" değil, <*> 'yi hedeflemenizi öneririz, bu nedenle yalnızca herhangi bir etiketi değil, yorumları da çekiyorsunuz. – corsiKa

cevap

22

normal bir ifade kullanın. Sonra tüm alt dizeleri "" boş dizeyle değiştirin.

Referans: java.lang.String.replaceAll()

+0

Belki de "<[^>] *>' anlamına mı geliyorsunuz? Mevcut regexp, " bar " türlerini "<.>", "bar" 'a çeviremez. –

+0

@Mike Samuel: Düzenlendi, teşekkürler. Olan şey, başlangıçta isteksiz bir niceleyiciyi kullanmak istedim, yani '/ <.*?>/', ancak onu kullanmanın kavramsal karmaşıklığına karşı karar verdim. Kararımı değiştirme sürecinde bir düzenleme hatası yaptım. – Nayuki

+0

Teşekkürler, bu yöntem gerçekten iyi çalıştı. Kapsamlı sınıf için replaceAll gibi bir yöntem var mı? – Sean

0

Eğer alt dize kullanabilirsiniz normal ifadeler kullanmaktan kaçınmak tercih ederseniz:

String origText = "P.S.<!--"+ 
    "BODY"+ 
     "{"+ 
     "color:white;"+ 
     "background-color: transparent;"+ 
     "font-family:sans-serif;"+ 
     "}"+ 
    "--> Hello how are you today?"; 
String revised = origText.substring(0, origText.indexOf('<')) + 
    origText.substring(origText.lastIndexOf('>')+1, origText.length()); 

`Java String Class Reference

+0

Bu başarısız olur "String text =" Bu a test. "; – corsiKa

+0

Gerçekten. Düzeltmek için 'lastIndexOf ('>')' yerine 'indexOf ('>')' yazın. – Nayuki

+0

@glowcoder: true, ancak OP çoklu tekrarlama belirtmedi. –

İlgili konular