尝试使用Groovy脚本进行简单的字符串替换,但无法成功。尝试了各种方法,包括以不同方式转义字符串,但仍无法解决问题。
这段代码的结果是:
String file ="C:\\Test\\Test1\\Test2\\Test3\\"
String afile = file.toString() println
"original string: " + afile
afile.replace("\\\\", "/")
afile.replaceAll("\\\\", "/") println
"replaced string: " + afile
这段代码的结果是:
original string: C:\Test\Test1\Test2\Test3\
replaced string: C:\Test\Test1\Test2\Test3\
----------------------------
受Sorrow启发,答案如下:
答案如下,受Sorrow的启示:
// first, replace backslashes
String afile = file.toString().replaceAll("\\\\", "/")
// then, convert backslash to forward slash
String fixed = afile.replaceAll("//", "/")
assert file.class == file.toString().class
,所以toString()
是多余的。然后,您正确地将所有单个反斜杠实例替换为正斜杠,以便assert afile == 'C:/Test/Test1/Test2/Test3/'
但是,然后您尝试替换所有连续两个正斜杠的实例(在字符串中不存在,请参见前面的 assert)为单个正斜杠?这个问题的简单答案是:String result = file.replaceAll('\\\\', '/')
,不需要更多。 - Stefan van den Akker