簡體   English   中英

如何使用 JAVA 從大字符串中提取路徑?

[英]How can I extract path from a large string using JAVA?

我找不到任何模式(算法)來從這種類型的長字符串中提取文件路徑。

List<Person>newPersonList = new PersonUtility().getAllPerson(\"C://data//person.txt\");

我只需要以下路徑:

C://data//person.txt

您可以使用正則表達式來提取路徑:

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());
}

Output:

C://data//person.txt

ListNewPersonList 聽起來像是在處理一個列表而不是一個大字符串?

通常,您應該以大寫字母開頭 class 名稱和以小寫字母開頭的變量。

但是讓我們假設您是正確的,並且我們在其他地方聲明了

String ListNewPersonList ...

好的,所以你有一個字符串。 Java 有一整套固定在字符串上的方法來操作它 - 甚至是正則表達式(使 Perl 打勾的東西)。

您可能正在尋找的是這樣的:

int x = ListNewPersonList.indexOf("C://");

例如,尋找一個 substring,你不會合理地期望在文本的其他任何地方找到它。

然后,您只需要一個結束索引,您可以執行以下操作:

 String theFileNameToLookFor = ListNewPersonList.substring(x, y);

或者可能是 y-1,具體取決於。

對字符串邊界要非常小心,因為底層實現默認將它們視為數組,並且您不想嘗試索引到實際不存在的數組部分。 如果您這樣做,Java 不會喜歡它。

但問題出在這里——除非你確定你所追求的特定文件結尾(在本例中為“.txt”),否則你會被塞滿,因為你無法確定目錄名稱將有多長。

長篇大論,答案可能如下所示:

  String answer = ListNewPersonList.substring(
                       ListNewPersonList.indexOf("C://"),
                       ListNewPersonList.indexOf(".txt"));

當然,如果您碰巧有在第一個 C:// 之前出現的 a.txt,那當然是非常不安全的

這就是生活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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