是否可以让用户在 JFileChooser 中输入带引号的路径并获得不带引号的路径?
例如,用户"c:\path\to\File"
在文件名文本字段中输入:但是当我得到选定的文件时,我得到了当前目录 + "c:\path\to\File"
。他们是解决这个问题的方法吗?
谢谢,
是否可以让用户在 JFileChooser 中输入带引号的路径并获得不带引号的路径?
例如,用户"c:\path\to\File"
在文件名文本字段中输入:但是当我得到选定的文件时,我得到了当前目录 + "c:\path\to\File"
。他们是解决这个问题的方法吗?
谢谢,
你可以这样做:
String str = "\"C:\\foor\\bar\"";
System.out.println(str);
String newStr = str.replaceAll("\"?(.+?)\"?", "$1");
System.out.println(newStr);
印刷:
"C:\foo\bar"
C:\foo\bar
这将删除"
恰好位于字符串开头和结尾的引号 ( )。正?
则表达式中的 表示引号可能不存在,因此例如,以下内容都应该产生相同的结果:
"C:\foo\bar"
"C:\foo\bar
C:\foo\bar"
C:\foo\bar
但是,据我所知,该"
字符不会成为有效文件路径的一部分,因此您可以通过执行以下操作来解决:str.replaceAll("\"","");
.
编辑:看到您的评论和问题编辑,我制作了这段简短的代码,似乎可以满足您的需求。也就是说,我不会删除我之前的答案,以防其他人发现它有用。
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("Hello");
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.setAcceptAllFileFilterUsed(false);
if (chooser.showOpenDialog(f) == JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
if (file.getName().contains("\""))
{
Pattern pattern = Pattern.compile("\"?(.*?)\"?");
Matcher m = pattern.matcher(file.getName());
if (m.matches())
{
System.out.println("Group Found: " + m.group(1));
}
}
}
这似乎是你所追求的,我在文件文本框中粘贴了以下内容:"C:\foo\bar.txt"
和打印的代码C:\foo\bar.txt
,不包括初始段。