[英]Java Split a string on a backslash
我有一個存儲為字符串的文件的路徑: "C:\\\\Users\\\\Owner\\\\Desktop\\\\foo.txt"
。 我只想隔離"foo.txt"
部分,因此我嘗試在反斜杠上拆分字符串,例如"C:\\\\Users\\\\Owner\\\\Desktop\\\\foo.txt".split("\\\\")
,然后獲取數組的最后一個元素。 如果我理解正確,則第一個反斜杠應轉義第二個反斜杠,使其不成為特殊字符,以便將字符串分割成一個反斜杠字符。 但是,當我運行代碼時,會拋出java.util.regex.PatternSyntaxException
。 在Java中反斜杠分割的正確方法是什么?
哦,不...請不要弄亂Windows文件名。 您不想要的一件事就是擁有依賴於平台的代碼。 而不是使用標准Java庫:
System.out.println(new File("C:\\Users\\Owner\\Desktop\\foo.txt").getName());
最后,如果確實需要手動解析路徑,則可以使用File.separatorChar
使代碼可移植。
// hardcoded here for the example, but you would actually get it from somewhere
String path = "C:\\Users\\Owner\\Desktop\\foo.txt";
int i = path.lastIndexOf(File.separatorChar);
String last = i < 0 || i == s.length() ? "" : path.substring(i + 1);
System.out.println(last);
這也比拆分字符串便宜,因為您只對最后一個元素感興趣。
反斜杠是保留的,因此您必須像這樣使用雙反斜杠:
filename.split("\\\\")
為了使該解決方案在各個平台上都能一致地工作,最好使用:
filename.split(Pattern.quote(File.separator))
另外,正如Dici指出的,您可以執行以下操作:
new File(filename).getName()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.