String var1 = "dfas\'f";System.out.println(var1.replaceAll("\\\'", "@@@"));
String var2 = "dfas'f";System.out.println(var2.replaceAll("\\\'", "@@@"));
都可以替换
java中String的replaceAll方法
答案:2 悬赏:10 手机版
解决时间 2021-02-20 22:02
- 提问者网友:爱了却不能说
- 2021-02-20 06:31
最佳答案
- 五星知识达人网友:拜訪者
- 2021-02-20 08:03
字符组中“\”是有转义的含义的,就跟你replaceAll中使用多个"\"是为了转义一样。
你定义var1时,java是认为"dfas\'f"中的"\"是转义字符,转义"'"(最后还是"'")。所以var1和var2其实是一样的。这也是为什么你replaceAll后的结果也是一样的。
public class Test {
public static void main(String[] args) {
String var1 = "dfas\'f";
String var2 = "dfas'f";
System.out.println(var1); // 结果是 dfas'f
System.out.println(var1.equals(var2)); // 结果是 true
}
}
你定义var1时,java是认为"dfas\'f"中的"\"是转义字符,转义"'"(最后还是"'")。所以var1和var2其实是一样的。这也是为什么你replaceAll后的结果也是一样的。
public class Test {
public static void main(String[] args) {
String var1 = "dfas\'f";
String var2 = "dfas'f";
System.out.println(var1); // 结果是 dfas'f
System.out.println(var1.equals(var2)); // 结果是 true
}
}
全部回答
- 1楼网友:拜訪者
- 2021-02-20 08:26
之所以出错是因为
string的replaceall是采用“正则表达式”的方式替换。
在正则表达式中
\ (一个斜线)是用 \\ 来表示(即:用两个斜线表示一个斜线)
而在java语言中 \ (一个斜线)是用 \\ 来表示。(即:也用两个斜线表示一个斜线)
所以正则表达式为两个斜线("\\")的写法,在java语言中要用4个斜线来表示"\\\\"
(即: 一个"现实中的斜线" 在 正则表达式中用2个斜线来表示,而在java中2个斜线要用4个斜线来表示)
所以代码如下:
// str的实际内容是\\ (即两个斜线)
string str = "\\\\";
//将str中的两个斜线,转换为两个双斜线(即: 4条斜线)
str = str.replaceall("\\\\", "\\\\\\\\");
system.out.println(str);
看着有些晕吧。。。呵呵~~
没办法。。。只能这样写。。。。
你可以去学习一下正则表达式。
正则表达式说简单也简单,说难那还真够难的。
关键是用正则表达式去写什么东西。
曾经写过一个判断日期的正则表达式。。。。
我靠。。。居然写了n行。。。。
写完了,过2天,自己都不认识了。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯