删除绝对路径中的文件前缀,但前缀也是目录部分

时间:2012-05-11 10:00:45

标签: java string trim

我想知道以下问题是否有任何好的解决方案:

假设我有一个字符串,其中包含文件的绝对路径,并且该文件的前缀为" temp _"。 我可以使用string.replaceFirst()修剪前缀。

但如果我运气不好" temp _"也是该String中目录的一部分。 如何确保只修剪最后一次?

我只能考虑自己解析它,但是想知道是否有更好的方法可以做到这一点?

更确切地说,例如:

C:\Dump\sol1\temp_results\temp_2012-04-core.pcap

应该成为:

C:\Dump\sol1\temp_results\2012-04-core.pcap

3 个答案:

答案 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解决方案