将括号放在文件名周围

时间:2018-08-26 02:22:26

标签: java string apache-poi

这是我以前的问题的更正 Put brackets around filename for Excel formula

我的项目基于Apache POI,我正在尝试在单元格上使用公式。 我的公式如下。

sheet7.createRow(0).createCell(0).setCellFormula("+'C:\\Users\\Desktop\\[Test.xlsx]Average_Graph'!A2");

我使用的是JFileChooser,它允许用户选择文件。因此,每次使用该程序时,文件路径都会更改。

从JFileChooser,我得到的文件路径如下。

 String filepath= "C:\\Users\\Desktop\\Sheet.xlsx"`

为了正确使用公式,文件路径应采用以下格式。

"C:\\Users\\Desktop\\[Sheet.xlsx]"

如何更改从JFileCHooser获取的字符串以正确运行公式?

在上一个问题中,我错误地键入了 C:\ Users \ Desktop [Sheet.xlsx] ,而不是 C:\ Users \ Desktop \ [Sheet.xlsx] 答案给了我提到的输出。但是我需要输出为C:\Users\Desktop\[Sheet.xlsx]

请帮助。

2 个答案:

答案 0 :(得分:1)

如果您想通过直接更改文件路径来解决此问题,则可以使用String#replaceAll

String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
filepath = filepath.replaceAll("(?<=\\\\)([^\\\\]+)$", "[$1]");
System.out.println(filepath);

C:\Users\Desktop\[Sheet.xlsx]

Demo

答案 1 :(得分:1)

文件名中不会带有\反斜杠,因此我们可以假定文件名在最后一个反斜杠之后开始,并在字符串末尾结束。

我们可以使用它:

String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
String dir = filepath.substring(0, filepath.lastIndexOf("\\"+1));
String filename = filepath.substring(filepath.lastIndexOf("\\"+1));

filepath = dir + "[" + filename + "]";

或更短的版本:

String filepath = "C:\\Users\\Desktop\\Sheet.xlsx";
filepath =  filepath.substring(0, filepath.lastIndexOf("\\"+1)) +
            "[" + filepath.substring(filepath.lastIndexOf("\\"+1)) + "]";