3

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

假设我有一个带有文件绝对路径的字符串,并且该文件具有前缀“temp_”。我可以用 string.replaceFirst() 修剪前缀。

但如果我不走运,“temp_”也是该字符串中目录的一部分。如何确保只有最后一次出现会被修剪?

我只能想自己解析它,但想知道是否还有魔法可以更好地做到这一点?

更准确地说,例如:

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

应该变成:

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

3 回答 3

4

如果使用Path.getFileName(),则仅返回文件的基本名称(即,它不包括任何父目录)。您可以使用它进行替换,然后使用其他 Path 函数(请参阅getName()subpath()等)将其重新组合到另一个 Path 或单个字符串中。

于 2012-05-11T10:03:53.123 回答
3

如果你有它是一个 File 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, ""));
于 2012-05-11T10:05:27.053 回答
0

这只是另一个示例如何做到这一点。

将整个字符串分成三个部分。

1.substring till temp_ last occurence

2.last occuerence of temp_

3.substring after last occuerence of temp_

cancat 1+3 无论如何我推荐@goldilocks 解决方案

于 2012-05-11T10:30:23.663 回答