1

基本的に、これは私がやろうとしていることです:

String s = "to+go+la";

s.replaceAll("to+go", "");

返すべきもの"+la"

+ 記号を置き換えるだけなら を使用することはわかっ\\+ていますが、記号が埋め込まれたときに何をすべきかわかりません。両方から削除するのが最善の答えですか?これは私の目的では機能しますが、ダクトテープの答えのようです。

4

3 に答える 3

4

...しかし、それはダクトテープの答えのようです。

\+「+」文字だけを置き換えるときに使用する必要がある理由を学んでいないため、「ダクトテープ」の答えのようです。

答えは、「+」が正規表現のメタ文字だということです。「これより前の文字またはグループが 1 回以上出現する可能性がある」という意味です。


"to+go"(正規表現ではなく) リテラル文字列として扱いたい場合、これを行う 1 つの方法は、それを「正規表現引用」することです。例えば

s.replaceAll(Pattern.quote("to+go"), "");

一方、+文字がまったく無関係な場合は、それらを削除することもできます...

于 2012-08-19T07:37:40.857 に答える
1

あなたのケースは正規表現を必要としないので、それを使用するのは不適切です。それは遅く、より面倒です。replaceの代わりにプレーンでシンプルなものを使用するとreplaceAll、何もエスケープする必要がなくなります。

String s = "to+go+la".replace("to+go", "");
于 2012-08-19T10:54:58.870 に答える
1

これはどう:

  String input = "to+go+la";
  String result = input.replaceAll("to\\+go","");
  System.out.println(result);

なぜこれが悪いパターンなのですか?埋め込みとは、このようなことを意味しますか?

 String input = "to+++go+la";

その場合、変更されるのはパターンだけです。

 String result = input.replaceAll("to(\\+)+go","");
于 2012-08-19T07:51:00.310 に答える