java - Groovy 删除路径的开头

标签 java groovy replace escaping

我正在尝试删除其中包含“\”和“”的路径的开头。我似乎遇到了一些问题,说字符 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\\\\", "");

最佳答案

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

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 )

关于java - Groovy 删除路径的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52193014/

相关文章:

java - GWT 和 ScriptEngineManager

java - 使用 EJB 接口(interface)作为辅助类

java - 存储学生详细信息的最佳集合?

grails - 在Grails中使用Groovy库并获取 'No suitable ClassLoader found for grab'

gradle - 如何指定gradle构建执行顺序

Javascript 用单反斜杠替换双反斜杠

php - MySQL在插入前删除空格

java - 错误 "Cannot find symbol method charAt(int)"?

groovy - 如何在 Groovy 中以正确的方式将 String 转换为 int

php - 在 PHP 中用 PDO 替换/迁移旧的 mysql 语法