2 回答

TA貢獻1943條經(jīng)驗 獲得超7個贊
您可以使用正則表達式來提取路徑:
String str = "ListnewPersonList = new PersonUtility().getAllPerson (\"C://data//person.txt\")";
Matcher m = Pattern.compile("\\w://[^\"]+").matcher(str);
while(m.find()) {
System.out.println(m.group());
}
輸出:
C://data//person.txt

TA貢獻1818條經(jīng)驗 獲得超7個贊
ListNewPersonList 聽起來像是您正在處理一個列表而不是一個大字符串?
一般來說,類名應以大寫字母開頭,變量名應以小寫字母開頭。
但我們假設你是正確的,并且我們在其他地方聲明了
String ListNewPersonList ...
好的,所以你有一個字符串。Java 有大量的方法固定在 String 上來操作它 - 甚至包括正則表達式(讓 Perl 發(fā)揮作用的東西)。
您可能正在尋找的是這樣的:
int x = ListNewPersonList.indexOf("C://");
例如,查找您不會合理期望在文本中其他任何地方找到的子字符串。
那么你所需要的只是一個結(jié)束索引,你可以這樣做:
String theFileNameToLookFor = ListNewPersonList.substring(x, y);
或者可能是 y-1,具體取決于。
對字符串邊界要非常小心,因為底層實現(xiàn)默認將它們視為數(shù)組,并且您不想嘗試對實際上不存在的數(shù)組部分進行索引。如果你這樣做,Java 不會喜歡它。
但這是問題所在 - 除非您確定要查找的特定文件結(jié)尾(在本例中為“.txt”),否則您會被塞滿,因為您無法確定目錄名稱的長度。
從長篇來看,答案可能如下所示:
String answer = ListNewPersonList.substring( ListNewPersonList.indexOf("C://"), ListNewPersonList.indexOf(".txt"));
當然,如果您碰巧有一個 .txt 出現(xiàn)在第一個 C:// 之前,那是非常不安全的
這就是人生。
添加回答
舉報