-1

+文字を文字列にある文字に置き換えようとしhyphenています。

String str = "word+word";
str.replaceAll('+ ', '-');

置換を使用してみましたが、exceptionこれを行う他の方法はありますか。

4

6 に答える 6

4

使用する

str = str.replaceAll("\\+", "-");

コード内のいくつかのエラー:

  • replaceAllは文字ではなく文字列を取ります
  • +最初の引数が正規表現であるため、 char をエスケープする必要があります (\それ自体は Java 文字列リテラルでエスケープする必要があります)。
  • 関数の戻り値を取得する必要があります。文字列は不変であるため、関数はそれを変更しませんが、別の文字列を返します
于 2013-01-29T07:12:41.830 に答える
4

使用するだけreplaceです:

str = str.replace('+', '-');

これは正規表現では機能しませんが、文字をそのまま使用します。 また、ご覧のとおり、Java では不変であるため、変数
に再度値を再設定する必要があります。この場合、メソッドは現在の( )を変更しませんが、'-'に置き換えて新しいものを作成します。strStringreplaceStringstr+

于 2013-01-29T07:14:13.620 に答える
1

このreplaceAll関数は、最初の引数として正規表現を取ります。+正規表現言語の特殊文字であることが起こります。に置き換え+てみてください\\+。これによりプラス記号がエスケープされるため、コードは通常の文字のように処理されます。

また、replaceAllメソッドは文字列を生成するため、機能しません。やってみてください:

String str = "word+word";
str = str.replaceAll("\\+ ", "-");
于 2013-01-29T07:13:32.410 に答える
1

「replaceAll」は正規表現用で、文字列は不変です。使用する:

str = str.replace("+", "-");

代わりは...

于 2013-01-29T07:14:22.623 に答える
0

使用する必要のあるエスケープシーケンスがわからない場合は、

あなたは単にこれを行うことができます。

str = str.replaceAll(Pattern.quote("+"), "-");

これにより、正規表現で事前定義されたトークンが自動的にエスケープされ、文字通りの方法で一致します

于 2013-01-29T07:21:44.447 に答える
0

replaceAll では '' ではなく "" を使用します。

String java.lang.String.replaceAll(String regex, String replacement)

于 2013-01-29T07:13:54.467 に答える