java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠

时间:2022-10-12 15:58:04
java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠

例如  str1="aa\bbb"; str2="aa'bbb"; 

要想替换成 str1="aa\\bbb";str2="aa\'bbb";

必须这样替换:

             str1 = str1.replaceAll("\\\\", "\\\\\\\\");
             str2 = str2.replaceAll("'", "\\\\'");

原因如下:

String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的,

\\\\   ,java解析为\\交给正则表达式,   正则表达式再经过一次转换,把\\转换成为\ 

也就是java里面要用正则来表示一个\. 必须写成4个\ 

如果要表示\\,那就要写8个\


所以如果写成: str1 = str1.replaceAll("\\", "\\\\");

就会报正则表达式的错误。

9 个解决方案

#1


呵呵!没办法

#2


哦 ,我明白了,以前我老想不明白,郁闷着>..........

#3


吐血,这规则也太抽了吧.
谢谢楼主分享.

#4


嘿嘿,谁让“\”在Java和正则表达式中都是转义字符呢?

#5


恩,了解了,呵呵 ,谢谢啦

#6


太感谢啦,刚才还郁闷半天呢!

#7


谢谢,刚刚还在郁闷为什么报错。

#8


问题解决了,太感谢了,,
是在 servlet 里面碰到的问题
用getRealPath 获得 /WEB-INF路径后想自动转换成java可以识别的路径,,试了老半天没成功,后来换成
str1 = str1.replaceAll("\\\\", "\\\\\\\\");  就ok了,,,

#9


感觉楼主,正在苦恼呢,终于解决了

#1


呵呵!没办法

#2


哦 ,我明白了,以前我老想不明白,郁闷着>..........

#3


吐血,这规则也太抽了吧.
谢谢楼主分享.

#4


嘿嘿,谁让“\”在Java和正则表达式中都是转义字符呢?

#5


恩,了解了,呵呵 ,谢谢啦

#6


太感谢啦,刚才还郁闷半天呢!

#7


谢谢,刚刚还在郁闷为什么报错。

#8


问题解决了,太感谢了,,
是在 servlet 里面碰到的问题
用getRealPath 获得 /WEB-INF路径后想自动转换成java可以识别的路径,,试了老半天没成功,后来换成
str1 = str1.replaceAll("\\\\", "\\\\\\\\");  就ok了,,,

#9


感觉楼主,正在苦恼呢,终于解决了