Java中如何替换字符串中的点(.)

90

我有一个名为persons.name的字符串。

我想用/*/替换掉句号.,即我的输出将是persons/*/name

我尝试了这段代码:

String a="\\*\\";
str=xpath.replaceAll("\\.", a);

我遇到了StringIndexOutOfBoundsException异常。

我该如何替换句点(dot)?


我知道那是一个老问题,但给在这里找答案的每个人一个建议:请停止在不必处理正则表达式的情况下使用replaceAll。在Java库中,“replaceAll”并不意味着“替换所有出现”。 - Andrea
4个回答

158

2
难道不应该是 xpath.replaceAll("\\\\.", "/*/") 吗? - ha9u63a7

18
如果您想要替换简单的字符串而不需要正则表达式的能力,您可以使用replace而不是replaceAllreplace会替换每个匹配的子字符串,但不会将其参数解释为正则表达式。
str = xpath.replace(".", "/*/");

9
使用 Apache Commons Lang 库:
String a= "\\*\\";
str = StringUtils.replace(xpath, ".", a);

或者使用独立的JDK:

String a = "\\*\\"; // or: String a = "/*/";
String replacement = Matcher.quoteReplacement(a);
String searchString = Pattern.quote(".");
String str = xpath.replaceAll(searchString, replacement);

-2

返回 sentence.replaceAll("\s",".");


2
这不是问题所要求的内容。 - khelwood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接