java - 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\\\\", "");
解决方案
刚刚试了一下......四个反斜杠的例子对我有用:
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
推荐阅读
- bigcommerce - 我如何在购物车页面上添加一个按钮,允许客户“清空购物车”。在大商业中
- android - 单次垂直单击更改 RecyclerView 中的焦点
- node.js - 如何在 nodejs 服务器中处理批量 api 请求?
- c++ - 如何为函数的参数使用无限数量的结构?
- c# - 在 Xamarin Forms 中使用 SkiaSharp 绘制现有图像
- c# - 如何在插件中以编程方式访问 Outlook 中的旧存档邮件
- arrays - 如何在 CPLEX 中输入 3D 数组数据?
- javascript - 如何声明一个 express/js req.param,它是作用域/通过路由处理程序上的每个方法的?
- javascript - 在 Android Chrome 中的 Canvas 上绘制时如何防止拉动刷新
- python - 在 python 中加载机器学习模型时出错