2012-12-09 8 views
7

すべての疑問符( "?")を "\?"に置き換えることは可能ですか? ?すべての "?" "\?" Javaで

私はStringを持っていて、そのStringの一部を削除したいと思います。このように:

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring.replaceAll(replacestring, ""); 

でも!私が理解しているように、replaceAll()メソッドを単一のクエスチョンマークを含むStringで使用することはできません。このようにする必要があります "\?"最初。

質問は次のとおりです。 Questionmarksを "\?"に置き換える方法はありますか?文字列で?そして、いいえ、私は文字列を変更することができます。

ありがとうございました。誰かが私を理解してくれることを願っています!代わりにString.replaceAll()

答えて

15

replaceAll()を使用しないでください。replace()を使用してください。

それはreplaceAll()すべて出現を置き換え、replace()がちょうど1か何かを置き換えることよくある誤解があります。これはまったく間違っています。

replaceAll()の名前が正しくない - 正規表現を実際に置き換えます。
replace()は、あなたが望む単純な文字列を置き換えます。

どちらの方法も、すべて対象の出現を置き換えます。

ちょうどこの操作を行います。

longstring = longstring.replace(replacestring, ""); 

をそして、それはすべて動作します。

+3

+1は「一般的な誤解」部分です。 –

5

\\\\?を使用して\もエスケープします。

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring=longstring.replaceAll(replacestring, "\\\\?"); 

しかし、他の答えとしては、replaceAllがちょうどreplaceが動作するはずです、少しやり過ぎで、言及しています。

+0

実際には動作しますが、 "\\\?"絶対必要です "\\\\?"。しかし、ボヘミアンと他の人たちは言ったように。代わりにreplace()を使用します。とにかくありがとう! – GuiceU

+0

ああ。ありがとうございました。 – PearsonArtPhoto

2

replaceAllは正規表現をとり、?は正規表現の世界で特別な意味を持ちます。

この場合、正規表現は必要ないので、replaceを使用する必要があります。

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring = longstring.replace(replacestring, ""); 

ああ、文字列は不変です!! longstring = longstring.replace(..)、割り当てに気づく。

関連する問題