将“\”替换为使用String的replace()的任何其他字符

时间:2014-02-04 09:40:49

标签: java string replace special-characters

我不能用String做一个简单的操作,用'。

替换''

示例:t'est\' - > t'est*

我尝试过使用replace和replaceAll方法:

String s的值为:"t'est\'";

s.replaceAll("\'", "*"); -> result: t*est*
s.replaceAll("\\'", "*"); -> result: t*est*
s.replaceAll("\\\'", "*"); -> result: t*est*
s.replaceAll("\\\\'", "*"); -> result: t'est'

s.replace("\'", "*"); -> result: t'est'
s.replace("\\'", "*"); -> result: t'est'
s.replace("\\\'", "*"); -> result: t'est'
s.replace("\\\\'", "*"); -> result: t'est'

但在任何情况下我都没有得到结果。

6 个答案:

答案 0 :(得分:9)

您确定s的价值吗? '不是一个有意义的转义字符,所以如果你写String s = "t'est\'"s的值就是"t'est'"。要包含其他\字符,您需要通过编写String s = "t'est\\'"来转义它。然后,我认为"\\\\'"将是用于查找它的正则表达式。

答案 1 :(得分:1)

怎么样:

String s="t\'est\\\'";
s = s.replaceAll("\\\\'", "*");
System.out.println(s);

产生

t'est*

我使用http://www.htmlescape.net/javaescape_tool.html

转义了你的字符串

答案 2 :(得分:1)

\'实际上是转义'。 如果你想要一个实际的\'你需要逃避斜线,即写\\\'

然后您需要将其替换为\\\\'。在这种情况下,每对斜杠都会生成一个针对java的转义斜杠\,结果\\'为正则表达式的\'

答案 3 :(得分:1)

这个怎么样

String s = "t'est\\'";
System.out.println(s);
System.out.println(s.replace("\\", "*").replace("*'", "*"));

以下是输出结果:

t'est\'
t'est*

如果我的理解不正确或需要修改,请告诉我。

答案 4 :(得分:0)

你不需要逃避' 只需写下

s.replace("'", "*");

替换'


编辑:

如果你想匹配\'你应该尝试

s.replace("\\'", "*");

第一个反斜杠将逃脱第二个,并且“将保持”未转义“

答案 5 :(得分:0)

当你说String s的值为“t'est \”时,你的意思是它在源中的出现方式吗?因为,如果是这样,你用's'的字符串实际上是“t'est'”,这意味着你永远不会找到要替换的“\”。

如果它被声明为“t'est \”,那么它中将包含“\”。