2017-09-04 21 views
0

$achieved$を文字列から置き換える必要があります。大文字と小文字を区別しないでください。サーバーからの文字列で時々$ACHIeved$を取得することがあるため、大文字と小文字を区別する必要はありません。私は以下のコードを使用しています。大文字と小文字を区別して置換する

stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved)); 

私は(?i)でも試してみましたが、動作しません。
正規表現を使用することはできますか?

答えて

0

まず、replaceはリテラル文字列置換を実行し、最初の引数として正規表現を受け入れません。 replaceFirstまたはreplaceAllを使用する必要があります。次に、$は特殊正規表現char(文字列の終わりにマッチする)なので、エスケープする必要があります。あなたはPattern.quoteを使用することができます。だから、あなたは、小文字を区別しない検索ケースを行います。ここ

stringWithoutFormating = stringWithoutFormating.replaceAll("(?i)" + Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved), String.valueOf(achieved).replace("$", "\\$")); 

(?i)を使用することができ、 Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)\$achieved\$$achieved$をオンにし、その後交換が行われます。置換えのためにを実行することは、リテラル $を取り除くために必要です。

関連する問題