首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java replaceAll

Java replaceAll
EN

Stack Overflow用户
提问于 2014-10-08 20:23:42
回答 3查看 195关注 0票数 0

当我使用String.replaceAll(String, String)时,我注意到用$符号替换字符串是行不通的。示例$REPLACEME$不会在Linux系统中被替换。有人知道这是为什么吗?

一些代码:

代码语言:javascript
复制
String foo = "Some string with $REPLACEME$";
foo = foo.replaceAll("$REPLACEME$", "characters");
System.out.println(foo);

输出:

代码语言:javascript
复制
Some string with $REPLACEME$
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-08 20:24:44

$是一个需要转义的特殊字符:

代码语言:javascript
复制
foo = foo.replaceAll("\\$REPLACEME\\$", "characters");

或者更一般地使用Pattern.quote,它将将所有元字符(如$?等特殊字符)转义为字符串文本:

代码语言:javascript
复制
foo = foo.replaceAll(Pattern.quote("$REPLACEME$"), "characters");
票数 5
EN

Stack Overflow用户

发布于 2014-10-08 20:24:57

replaceAll使用正则表达式作为其第一个参数。$是一个锚点字符,它与regex中匹配的字符串的末尾匹配,因此需要转义。

代码语言:javascript
复制
foo = foo.replaceAll("\\$REPLACEME\\$", "characters");
票数 3
EN

Stack Overflow用户

发布于 2014-10-08 20:33:57

replaceAll方法使用正则表达式$字符是正则表达式中的元字符,表示字符串的结尾。但是,replace方法也用替换字符串替换目标字符串的所有实例,并且使用一个普通字符串,而不是正则表达式。这将实现你期望的结果:

代码语言:javascript
复制
String foo = "Some string with $REPLACEME$";
foo = foo.replace("$REPLACEME$", "characters");
System.out.println(foo);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26265752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档