11

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

文字列があり、その文字列の一部 (URL が含まれる部分) を削除したいとします。このような:

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

しかし!私が理解しているように、単一の疑問符を含む文字列で replaceAll() メソッドを使用することはできません。この「\?」のようにする必要があります。最初。

問題は次のとおりです。疑問符を「\?」に置き換える方法はありますか? 文字列で?いいえ、文字列を変更するだけです。

事前に感謝します。誰かが私を理解してくれることを願っています! (下手な英語ですみません…)

4

4 に答える 4

25

使わないreplaceAll()で、使ってreplace()

すべてのオカレンスをreplaceAll()置き換え、1 つまたは何かを置き換えるだけというのはよくある誤解です。これは完全に間違っています。replace()

replaceAll()名前が不十分です-実際には正規表現を置き換えます。
replace()単純な文字列を置き換えます。これはあなたが望むものです。

どちらの方法でも、出現するすべてのターゲットが置き換えられます。

これを行うだけです:

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

そして、それはすべてうまくいくでしょう。

于 2012-12-09T20:38:19.390 に答える
4

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

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

しかし、他の答えが述べたようにreplaceAll、少しやり過ぎですが、replaceうまくいくはずです。

于 2012-12-09T20:32:52.767 に答える
2

String.replace()の代わりに使用String.replaceAll():

longstring = longstring.replace("?", "\\?");

String.replaceAll()正規表現を使用し、String.replace()プレーンテキストを使用します。

于 2012-12-09T20:32:46.503 に答える
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(..)、割り当てに注意してください。

于 2012-12-09T20:32:53.117 に答える