2011-08-17 5 views
8

私は入力文字列を受け取るプログラムを持っています。文字 '<'と '>'の中のものを削除したいと思います。文字列がJavaの '<' to '>'から部分文字列全体を削除するには

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

を言っている場合たとえば、私は、出力文字列だけ"P.S. Hello how are you today?"を含むようにしたいです。 Javaでこれを行う簡単な方法はありますか?おかげ

+1

と「<"/">」の組み合わせは一回だけか何回も存在します? –

+1

私は ''を '<*> 'ではないようにすることをお勧めします。実際にはタグだけでなく、コメントを実際に引き出しています。 – corsiKa

答えて

22

は、正規表現の使用:これが何を意味するのか

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

>ていない任意の数の文字、そして文字>、その後、<で始まるすべての部分文字列を見つけることです。次に、これらの部分文字列をすべて空の文字列""に置き換えます。

参考:java.lang.String.replaceAll()

+0

あなたは '<[^>] *>'を意味するのでしょうか?現在の正規表現は '' bar <.>を '' <.> '''、 '' bar "'に変換しません。 –

+0

@Mike Samuel:すでに編集しました。ありがとうございます。何が起こったのかは、最初は嫌な量指定子、つまり '/ <.*?> /'を使用したいと思っていましたが、それを使うという概念の複雑さに反して決めました。決定を変更する過程で編集エラーが発生しました。 – Nayuki

+0

ありがとう、このメソッドは本当にうまくいった。 SpannedクラスのreplaceAllのようなメソッドはありますか? – Sean

0

あなたがストリングに使用できる正規表現の使用を避けることを好むだろう場合:

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

'String text =" This <! - comment - >は失敗します。 <! - 他のコメント - >テスト。 "; ' – corsiKa

+0

確かに。修正するには、 'lastIndexOf( '>')'を 'indexOf( '>')'に置き換えてください。 – Nayuki

+0

@glowcoder:trueですが、OPは複数のオカレンスを指定していません。 –

関連する問題