簡體   English   中英

Java在反斜杠上分割字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM