修剪文件名足够短

时间:2016-07-28 11:20:14

标签: java string file path

我目前正在编写基于API的Gui,我希望在其中显示完整的文件名... 文件名通常太长,所以我想修剪这个文件名,只留下根据需要的文件夹。 例如:

  

C:\用户\ RoiEX \ someFolder \ SomeOtherFolder \ someFile.someExtension

应修剪为

  

C:\ ... \ someOtherFolder \ someFile.someExtension

我有我的变量fileName,它是通过调用file.getAbsolutePath()生成的。 我有一个方法,我们称之为tooLarge(fileName) 我会这样开始:

String fileName = file.getAbsolutePath();
while(tooLarge(fileName)){
    fileName = trimPath(fileName);
}
render(fileName);

我应该在trimPath()内做什么?

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

如果你知道你的PATH到那个目录,并且你正在转换为相对路径,那么你可以这样做。

final String PATH = "C:\\Users\\RoiEX\\someFolder";
String path = filename.replaceFirst(PATH, "C\\..\\");

答案 1 :(得分:1)

使用replaceAll()的正确正则表达式适合您:

public static void main(String[] args) {
    String s = "C:\\asas\\Users\\RoiEX\\someFolder\\SomeOtherFolder\\someFile.someExtension";
    System.out.println(s.replaceAll("(\\w+:\\\\).*?(\\\\\\w+\\\\\\w+.\\w+)$", "$1...$2"));  
}

O / P:

C:\...\SomeOtherFolder\someFile.someExtension

上述正则表达式选择最后一个起始目录和带文件名的最后一个目录。