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
正規表現を使用する代わりに、代わりにreplaceルーチンを試してください
expression = "AXA || BXB && CXC || BXB";
expression = expression.replace("||", " OR ");
replaceAllは最初の引数として正規表現を取りますreplace。代わりに使用してみてください。
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"));
String#replaceAll()パターンを正規表現として扱うため、ここで使用する理由はありません。パターン内の特殊文字のエスケープについて心配するString#replace()必要はありません。
expression = "AXA || BXB && CXC || BXB";
expression = expression.replace("||", " OR ");
あなたは脱出する必要があります|
String expression = "AXA || BXB && CXC || BXB";
expression = expression.replaceAll(" ?\\|\\| ?", " OR ");
System.out.println(expression);
版画
AXA OR BXB && CXC OR BXB
すべての特殊文字が正規表現に含まれていることを忘れがちです。私は今、String Pattern.quote(String s)英数字以外の文字を含む、含めたいリテラルの周りを使用する習慣があります。
(このケースがあなたの説明と同じくらい単純である場合、replace() がより良い選択であることに同意します。)