2016-11-18 39 views
5

ファイル内の特殊文字を特殊文字のみのパターンに置き換えようとしていますが、動作していないようです。Java置換特殊文字

ただし、実行すると、置き換えられた文字列の代わりに元の文字列が取得されます。私は間違って何をしていますか?

+0

文字列補間をしようとしていますか?例がそのように見えますか?その場合は、[MessageFormat](https://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html)を参照してください。 –

答えて

7

は、単に次のように、与えられた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"); 
5

エスケープ文字: - 正規表現

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 { 

参照: - http://www.regular-expressions.info/characters.html

0

注意。これは正規表現です。 on this siteを置き換える文字列に一致する正規表現を作成しようとすることができます。 @Mritunjay

0
special = special.replaceAll("\\W","as"); 

作品特殊文字。

関連する問題