繁体   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