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() がより良い選択であることに同意します。)