ファイル内の特殊文字を特殊文字のみのパターンに置き換えようとしていますが、動作していないようです。Java置換特殊文字
ただし、実行すると、置き換えられた文字列の代わりに元の文字列が取得されます。私は間違って何をしていますか?
ファイル内の特殊文字を特殊文字のみのパターンに置き換えようとしていますが、動作していないようです。Java置換特殊文字
ただし、実行すると、置き換えられた文字列の代わりに元の文字列が取得されます。私は間違って何をしていますか?
は、単に次のように、与えられたCharSequence
を置き換えるために、あなたのケースでString#replace(CharSequence target, CharSequence replacement)
を使用します。
special = special.replace("@$", "as");
またはあなたのString
がリテラルパターンString
として変換することPattern.quote(String s)
を使用し、次のように:
special = special.replaceAll(Pattern.quote("@$"), "as");
非常に頻繁に行う場合は、対応するPattern
インスタンスを再利用することを検討してください(クラスPattern
はスレッドセーフです。つまり、このクラスのインスタンスを共有できます)。パフォーマンスの期間。
だからあなたのコードは次のようになります。最初に与えられたパラメータを使用して、置き換えたい文字列ではないことを
private static final Pattern PATTERN = Pattern.compile("@$", Pattern.LITERAL);
...
special = PATTERN.matcher(special).replaceAll("as");
エスケープ文字: - 正規表現
String special = "Something @$ great @$ that.";
special = special.replaceAll("@\\$", "as");
System.out.println(special);
、12文字以下では、メタ文字と呼ば予約されています。これらの文字のいずれかを正規表現でリテラルとして使用したい場合は、それらをバックスラッシュでエスケープする必要があります。
the backslash \
the caret^
the dollar sign $
the period or dot .
the vertical bar or pipe symbol |
the question mark ?
the asterisk or star *
the plus sign +
the opening parenthesis (
the closing parenthesis)
the opening square bracket [
and the opening curly brace {
注意。これは正規表現です。 on this siteを置き換える文字列に一致する正規表現を作成しようとすることができます。 @Mritunjay
方法でReplaceAllはsubstitueにパターンとして正規表現を受け入れるにより示唆されるように
special = special.replaceAll("\\@\\$", "as");
は、動作します: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)
は、単純に試してみてください。すべてと
special = special.replace("@$", "as");
special = special.replaceAll("\\W","as");
作品特殊文字。
文字列補間をしようとしていますか?例がそのように見えますか?その場合は、[MessageFormat](https://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html)を参照してください。 –