ユーザーが 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\バー
"
これにより、文字列の最初と最後にある引用符 ( ) が削除されます。正規表現の?
は、引用符が存在しない可能性があることを示しているため、たとえば、次の場合はすべて同じ結果になります。
"C:\foo\bar"
"C:\foo\bar
C:\foo\bar"
C:\foo\バー
ただし、私の知る限り、この"
文字は有効なファイル パスの一部にはならないため、次のようにするだけで回避できる場合があります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