首页 > 解决方案 > Groovy 删除路径的开头

问题描述

我正在尝试删除其中包含 '\' 和 ' ' 的路径的开头。我似乎遇到了一些问题,即在字符 3 处出现转义字符问题。示例:SomePath: C:\Users\ADMINISTRATOR\App Play\blah\blah

SomePath.replaceFirst('C:\\Users\\ADMINISTRATOR\\App Play\\', '');

路径应该是 blah\blah

我试过了:

SomePath.replaceFirst("C:\Users\ADMINISTRATOR\App Play\", "");
SomePath.replaceFirst("C:\\Users\\ADMINISTRATOR\\App Play\\", "");
SomePath.replaceFirst("C:\\\\Users\\\\ADMINISTRATOR\\\\App Play\\\\", "");

SomePath.replaceAll("C:\Users\ADMINISTRATOR\App Play\", "");
SomePath.replaceAll("C:\\Users\\ADMINISTRATOR\\App Play\\", "");
SomePath.replaceAll("C:\\\\Users\\\\ADMINISTRATOR\\\\App Play\\\\", "");

标签: javagroovyreplaceescaping

解决方案


刚刚试了一下......四个反斜杠的例子对我有用:

def somePath = "C:\\Users\\ADMINISTRATOR\\App Play\\blah\\blah"
println somePath
somePath.replaceFirst("C:\\\\Users\\\\ADMINISTRATOR\\\\App Play\\\\", "");

问题是字符串需要一个转义\,并且由于replaceFirst使用正则表达式,正则表达式引擎需要另一个\转义\. 结果是四个反斜杠。

顺便说一句:您可以使用字符串操作来获取路径,但您也可以尝试这样的文件操作:

def root= new File("C:\\Users\\ADMINISTRATOR\\App Play\\")
def full= new File("C:\\Users\\ADMINISTRATOR\\App Play\\blah\\blah")
def relPath = root.toPath().relativize( full.toPath() ).toFile()
println relPath

(取自https://gist.github.com/ysb33r/5804364


推荐阅读