2

AXA || BXB && CXC || BXB文字列をに置き換えるにはどうすればよいAXA OR BXB && CXC OR BXBですか?

私は試した

expression = "AXA || BXB && CXC || BXB";
expression = expression.replaceAll("||", " OR ");

しかし、これは望ましい結果を提供しません。AXA OR BXB && CXC OR BXB

4

6 に答える 6

4

正規表現を使用する代わりに、代わりにreplaceルーチンを試してください

expression = "AXA || BXB && CXC || BXB";
expression = expression.replace("||", " OR ");
于 2012-09-03T16:19:00.697 に答える
1

replaceAllは最初の引数として正規表現を取りますreplace。代わりに使用してみてください。

于 2012-09-03T16:18:48.667 に答える
1

replaceAllは正規表現を使用し、代替|を意味する特殊文字です。したがって、リテラルを使用するにはエスケープする必要があります。|

String s = "AXA || BXB && CXC || BXB";
System.out.println(s.replaceAll("\\|\\|", "OR"));

またはさらに良いreplace()ことに、正規表現を使用しない を使用するだけです。

String s = "AXA || BXB && CXC || BXB";
System.out.println(s.replace("||", "OR"));
于 2012-09-03T16:18:24.590 に答える
0

String#replaceAll()パターンを正規表現として扱うため、ここで使用する理由はありません。パターン内の特殊文字のエスケープについて心配するString#replace()必要はありません。

expression = "AXA || BXB && CXC || BXB";
expression = expression.replace("||", " OR ");
于 2012-09-03T16:19:24.560 に答える
0

あなたは脱出する必要があります|

String expression = "AXA || BXB && CXC || BXB";
expression = expression.replaceAll(" ?\\|\\| ?", " OR ");
System.out.println(expression);

版画

AXA OR BXB && CXC OR BXB
于 2012-09-03T16:19:27.387 に答える
0

すべての特殊文字が正規表現に含まれていることを忘れがちです。私は今、String Pattern.quote(String s)英数字以外の文字を含む、含めたいリテラルの周りを使用する習慣があります。

(このケースがあなたの説明と同じくらい単純である場合、replace() がより良い選択であることに同意します。)

于 2012-09-03T16:28:50.277 に答える