2017-10-04 29 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没有做任何事情。

我在线阅读,我可能需要把先前的值在的replaceAll所以我尝试以下

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

除了这

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

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

在这一点上,我觉得我只是尝试随机的东西,我在这里错过了一些微不足道的东西。

+0

[见此](https://regex101.com/r/TSv6V1/2)。正则表达式:''('; Replace'('' – ctwheels

+0

)单个反斜杠在Java中不起作用,相当于\\或\'或\“,我全部尝试了它们 – Maude

+0

从上面的链接可以看到,选择java,你会得到这个页面:https://regex101.com/r/TSv6V1/2/codegen?language=java。我在上面发布的评论是纯正规表达式,你需要转义字符之后在Java中(正如本评论中的链接所示) – ctwheels

回答

1

replaceAll不改变字符串。尝试

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

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

在java中,字符串是不可变的。所以你可能想把replaceAll结果赋给一个变量。

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

而且你如果可以省略条件,导致replaceAll将取代琴弦,只有当它找到一个匹配。

相关问题