2017-10-04 12 views
0

は、私は別のソリューションの多くの亜種は、括弧(と、より多くの)について、ここでJava Regexを使用して、カッコの前後にスペースを追加する方法は?

How to add space on both sides of a string in Java

Regex add space between all punctuation

Add space after capital letter

だけでなく、他のものを説明しようとした

Regex to match parenthesis

if (phrase.matches("^.*[(].*$")){ 
      phrase.replaceAll("\\(", " \\("); 
     } 

ザ・ワークス細かいけどでReplaceAll場合:私は文字列を持っていると私は単にこれ欲しい:HI()

このなるために:私がこれまで試してみました何HI()

何もしない。

私はので、私は、次の

if (phrase.matches("^.*[(].*$")){ 
    phrase.replaceAll("(.*)\\(", " \\("); 
} 

と同様に、この

if (phrase.matches("^.*[(].*$")){ 
    phrase.replaceAll("(.*)\\(", "(.*) \\("); 
} 

そしてこの

if (phrase.matches("^.*[(].*$")){ 
     phrase.replaceAll("(.*)\\((.*)", "(.*) \\((.*)"); 
    } 
を試してみましたでReplaceAllに以前の値を配置する必要がある場合がありますことをオンラインで読みます

この時点では、私はただランダムなものを試していると感じ、私はここで何か些細なものを紛失しています。

+0

[これを参照](https://regex101.com/r/TSv6V1/2) Regex: '\('; '(' – ctwheels

+0

を置き換えて、Javaでは単一のバックスラッシュは動作しません。同等は\\または\ 'または\ "であり、すべて試しました) – Maude

+0

上記のリンクから、セクションを選択し、javaを選択すると、このページが表示されます:https://regex101.com/r/TSv6V1/2/codegen?language=java。コメントの上に投稿したのは純粋な正規表現です。あなたは文字をエスケープする必要がありますその後Javaで(このコメントのリンクが示すように) – ctwheels

答えて

1

replaceAllは文字列を変更しません。 Javaで

if (phrase.matches("^.*[(].*$")){ 
    System.out.println(phrase.replaceAll("\\(", " \\(")); 
    // => f () 
} 

または

if (phrase.matches("^.*[(].*$")){ 
    phrase = phrase.replaceAll("\\(", " \\(")); 
} 
0

を試してみて、文字列は不変です。ですから、replaceAllの結果を変数に代入したいかもしれません。

phrase = phrase.replaceAll("\\(", " (");

またあなたの状態を省略することができれば、replaceAllは、それが一致するものを見つけた場合にのみ、文字列に置き換えられます起こします。

関連する問題