2

ユーザーが JFileChooser で引用符付きのパスを入力し、引用符なしでこのパスを取得できるようにすることは可能ですか?

たとえば、ユーザーは"c:\path\to\File" 「ファイル名」テキスト フィールドに次のように入力します。しかし、選択したファイルを取得すると、現在のディレクトリ + "c:\path\to\File". この問題を解決する方法はありますか?

ありがとう、

4

1 に答える 1

2

次のようなことができます。

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

于 2012-06-19T11:57:18.613 に答える