Вы могли бы сделать что-то вроде так:
String str = "\"C:\\foor\\bar\"";
System.out.println(str);
String newStr = str.replaceAll("\"?(.+?)\"?", "$1");
System.out.println(newStr);
печатает:
"C: \ Foo \ бар"
C: \ Foo \ бар
Это приведет к удалению котировок ("
), которые находятся точно в начале и конце строки. ?
в регулярном выражении означает, что котировки не может быть там, так что, например, следующие должны все дают одинаковый результат:
«C: \ Foo \ бар»
«C: \ Foo \ бар
C: \ Foo \ бар»
C: \ Foo \ бар
Впрочем, мне известно,Символне входит в допустимый путь к файлу, поэтому вы можете обойти это: str.replaceAll("\"","");
.
EDIT: Увидев ваш комментарий и вопрос, отредактировал, я сделал этот короткий фрагмент кода, который, похоже, делает то, что вам нужно. Тем не менее, я не буду удалять свой предыдущий ответ на случай, если кто-то другой найдет его полезным.
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
, за исключением начального сегмента.
Используйте метод String.replaceAll. – adatapost