2

你能帮我找到解决这个问题的方法吗?

我正在尝试使用 Swing 组件制作 Java GUI

该界面应该接受某个文件的Windows路径并在按下提交按钮后触发文件上的一组功能

现在我已经创建了组件来获取用户输入:

JTextField introducedPath1 = new JTextField(50);

我试图更改通过将路径从资源管理器复制粘贴到接受的文件路径中获得的默认 Windows 路径:

File file;
String makeCanonicalPath=introducedPath1.getText().toString();
            makeCanonicalPath=makeCanonicalPath.replaceAll("\\", "/");
            file = new File(makeCanonicalPath);

但我不断收到此错误:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1

\
 ^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)

我认为这是由 Windows 中的默认路径(例如:L:\practice\test)将其 '\' 解释为转义序列引起的。

任何帮助或建议将不胜感激

4

1 回答 1

3

使用replaceAll,需要对正则表达式使用java转义,所以

makeCanonicalPath.replaceAll("\\\\", "/");

因为它不是文本搜索替换,而是正则表达式。

例如,如果您想要基于文本的搜索替换,请使用apache commons string replace

此外,一种替代方法是使用 replace() - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replace(char , char) 而不是 replaceAll - 它将在不使用正则表达式的情况下替换所有出现的事件,并且由于您只有一个要替换的字符,所以它可以工作。

于 2013-01-03T18:54:35.393 回答