我正在创建一个程序来搜索目录路径。我使用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'}]
我对此很陌生,所以任何指向正确方向的指针都会受到赞赏。
答案 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
但重申一下,在你的情况下你不需要双斜杠。