关于在java中转义反斜杠,已经有很多问题了。根据我使用的内容,我可以替换char序列或正则表达式。但是这适用于逃避一个或两个反斜杠。在我的情况下,我需要用4替换每个\的每个出现。
编辑:在下面我故意省略第二次斜线以明确从1到4。
String s = "X:\Test\test\test"; //to String s = "X:\\\\Test\\\\test\\\\test";
所以人们会想到:
s.replace("\\","\\\\\\\\");
或通过正则表达式:
s.replaceAll("\\\\","\\\\\\\\\\\\\\\\");
但无论我做什么,结果字符串总是包含最多2个反向反斜杠\。 我不会得到4 \或更多。 似乎替换功能总是重复,直到只留下2个反斜杠。
我是否真的需要连接到一个新的String才能获得4个反斜杠?无法通过替换来解决这个问题?
或者有一种逃避可能性来搜索mysql中的文件路径? 我的数据库存储" X:\ test \ test",为了能够找到它我必须用4个反斜杠逃脱:
select * from f where filepath like 'X:\\\\test%'
任何想法?
编辑:我的日食确实打破了它,重新启动后,它打印出4个反斜杠。很抱歉给您带来不便。答案 0 :(得分:0)
这对我来说似乎不对。 首先是“String s =”X:\ Test \ test \ test“;”不会编译。
其次,您确定正确计算斜线吗?
考虑以下代码:
public static void main(String[] args) throws Exception {
String s = "X:\\Test\\test\\test";
s = s.replace("\\", "\\\\\\\\");
System.out.println(s);
}
这会将以下内容输出到控制台:
X:\\\\Test\\\\test\\\\test
如果您在运行时检查IDE中的变量以获取带有转义字符串的字符串,则会显示为:
X:\\\\\\\\Test\\\\\\\\test\\\\\\\\test
也许你没有将s =设置为s.replace()的结果?
答案 1 :(得分:0)
使用
"abc\\abc".replaceAll("\\u005c", "\\\\\\\\\\\\\\\\");
输出
abc\\\\abc
另外,
String s = "asdf\asdf"; //does not compile