我想知道以下问题是否有任何好的解决方案:
假设我有一个字符串,其中包含文件的绝对路径,并且该文件的前缀为" temp _"。 我可以使用string.replaceFirst()修剪前缀。
但如果我运气不好" temp _"也是该String中目录的一部分。 如何确保只修剪最后一次?
我只能考虑自己解析它,但是想知道是否有更好的方法可以做到这一点?
更确切地说,例如:
C:\Dump\sol1\temp_results\temp_2012-04-core.pcap
应该成为:
C:\Dump\sol1\temp_results\2012-04-core.pcap
答案 0 :(得分:4)
如果使用Path.getFileName()
,则仅返回文件的基本名称(即,它不包含任何父目录)。您可以使用其替换,并使用其他路径函数(请参阅getName()
,subpath()
等)将其重新组合到另一个路径或单个字符串中。
答案 1 :(得分:3)
如果你有它是一个文件ID defo使用@goldilocks的方法。但是如果由于某种原因你只是把它作为一个字符串,那么首先出现在我脑海中的是:
String target = "temp_";
String fullPath = "C:/Dump/sol1/temp_results/temp_2012-04-core.pcap";
StringBuffer sb = new StringBuffer(fullPath);
int end = fullPath.lastIndexOf(target) + target.length();
System.out.println(sb.replace(fullPath.lastIndexOf(target), end, ""));
答案 2 :(得分:0)
这只是另一个例子。如何做到这一点。
将总字符串分为三部分。
1.substring till temp_ last occurence
2.last occuerence of temp_
3.substring after last occuerence of temp_
cancat 1 + 3无论如何我推荐@goldilocks解决方案