如何使用JFileChooser添加单个反斜杠的双反斜杠

时间:2017-10-16 12:23:30

标签: java eclipse path jfilechooser backslash

我正在创建一个程序来搜索目录路径。我使用JFileChooser来做这件事很棒。这是它的代码。

txtPath.setText(fc.getSelectedFile().toString().replace("\", "\\"));

现在当我运行这个时,我得到了以这种方式编写的路径。 GUI showing the Path

所以你可以看到路径是用单个反斜杠分隔的,例如C:\ User \ Folder \ Database但是我希望它用这样的两个反斜杠来扩展路径。 C:\ Users \用户数据库。我尝试了这个,但有错误:

String  sourceFileName              = new String(txtPath.getSelectedText());

我想这样用:

>>> [{"date": key, "cost": sum(d["cost"] for d in group)} 
...  for key, group in itertools.groupby(dict1, key=lambda d: d["date"])]
[{'cost': 30, 'date': '10-05-2017'},
 {'cost': 25, 'date': '11-05-2017'},
 {'cost': 5, 'date': '12-05-2017'}]

我对此很陌生,所以任何指向正确方向的指针都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您无需更换任何东西。您只需要转义字符串文字中的斜杠,例如

private List<String> getEveryLastMessages(){
    List<String> listSms = new ArrayList<String>();
    ContentResolver contentResolver = getActivity().getContentResolver();

    Cursor c = contentResolver.query(Telephony.Sms.Inbox.CONTENT_URI, // Official CONTENT_URI from docs
                new String[] { Telephony.Sms.Inbox.BODY }, // Select body text
                null,
                null,
                Telephony.Sms.Inbox.DEFAULT_SORT_ORDER); // Default sort order

    int totalSMS = c.getCount();

    if (c.moveToFirst()) {
        for (int i = 0; i < totalSMS; i++) {
            listSms.add(c.getString(0));
            listSms.add("\n");
            c.moveToNext();
        }
    } else {
        //Do something, no messages
    }
    c.close(); 

        return listSms;
}

即便如此,您也可以使用与平台无关的版本

String myPath = "C:\\foo\\bar";

如果你真的需要用双斜杠替换斜杠,你必须将它们转义(因为参数是字符串文字),所以你最终会得到

String myPath = "C:/foo/bar";

此外,如果您使用String foo = bar.replace("\\", "\\\\"); // Convert one slash to two slashes 方法将正则表达式作为参数,则需要双重转义。一次是字符串文字,一次是正则表达式引擎:

replaceAll

但重申一下,在你的情况下你不需要双斜杠。