我不能用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'
但在任何情况下我都没有得到结果。
答案 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*
转义了你的字符串
答案 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 \”,那么它中将包含“\”。