在Java中的字符串替换所有“(”和“)”(Replace all “(” and “)” in a

2019-09-22 08:32发布

如何更换所有的“(”和“)”中有句点的字符串,在Java中? 我想通过以下方式:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url.replaceAll(")", ".");
url.replaceAll(")", ".");

但是,这是行不通的。 错误是:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unmatched closing
')'
 )
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at com.azzist.cvConversion.server.URLChecker.main(URLChecker.java:32)

我觉得这个问题将在那里所有的正则表达式了。 添加\之前)没有工作。

Answer 1:

您可以在一个随时随地使用的replaceAll:

url.replaceAll("[()]", ".")

说明:

  • [()]同时匹配() ,托架不需要内部转义[]基团。

编辑(如@Keppil指出):

还要注意,该字符串url不会被改变的替代,它仅仅返回与更换一个新的String,所以你必须要做到:

url = url.replaceAll("[()]", ".");


Answer 2:

你需要逃跑'('')'"\\(""\\)"分别为:

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


Answer 3:

replaceAll()需要一个regex作为第一个参数,括号具有特殊的意义存在。

使用replace()代替:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url = url.replace("(", ".").replace(")", ".");

需要注意的是url =部分是很重要的,以节省更换的结果。 由于String s为不可变的 ,原始的String不改变,而是创建一个新的。 为了保证结果url需要指向这一个代替。



Answer 4:

  1. 字符串是不可改变的。
  2. )应与2个反斜线进行转义。

因此,代码是这样的:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
// is you need to escape all of them, use "[()]" pattern, instead of "\\)"
String s = url.replaceAll("\\)", "."); 
System.out.println(url);
System.out.println(s);

和输出:

https://bitbucket.org/neeraj_r/url-shortner)
https://bitbucket.org/neeraj_r/url-shortner.


Answer 5:

添加单个\是行不通的,因为这将尝试评估\)作为转义特殊字符,事实并非如此。

你需要使用“\)”。 第一\转义第二,产生一个“正常” \ ,这又逸出) ,产生一个正则表达式精确匹配的闭合paranthesis )

通用解决方案是使用Pattern.quote ,它接受一个任意字符串并返回完全匹配该字符串正则表达式。



Answer 6:

你也可以使用org.apache.commons.lang.StringUtils.replace(字符串,字符串,字符串)不使用正则表达式

来自Apache的公共图书馆http://commons.apache.org/



Answer 7:

方法String#replaceAll预计正则表达式, (以及)的特殊字符(标记组),所以你需要逃避他们成为非特殊url.replaceAll("\\)", ".");

也可以用图案一次更换这两个字符url.replaceAll("[()]", "."); 。 你可以看到,在此背景下,括号没有逃脱。 这是因为正则表达式上下文-内[]他们没有任何特殊含义。

看的JavaDoc以获得更多信息。



Answer 8:

因为)是正则表达式的性格,所以你需要逃避它。 尝试这个:

url.replaceAll("\)", "\.");


Answer 9:

采用

url.replaceAll("\\)", ".").replaceAll("\\(", ".");;


文章来源: Replace all “(” and “)” in a string in Java