如何使用JAVA从大字符串中提取路径?

时间:2019-10-28 05:58:11

标签: java regex file

我找不到任何模式(算法)来从这种长字符串类型中提取文件路径。

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

我只需要以下路径:

C://data//person.txt

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式提取路径:

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

答案 1 :(得分:-1)

ListNewPersonList听起来像是您在处理列表,而不是大字符串?

通常,类名应以大写字母开头,变量以小写字母开头。

但是我们假设您是正确的,我们声明了其他地方

String ListNewPersonList ...

好的,所以您有一个字符串。 Java拥有大量用于操作String的方法-甚至是regex(使Perl滴答作响的东西)。

您可能正在寻找的东西是这样的:

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

例如寻找您可能不会期望在文本中其他任何地方找到的子字符串。

然后,您需要做的是结束索引,您可以执行以下操作:

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

也许是y-1,具体取决于。

请非常小心使用字符串边界,因为底层实现默认将它们视为数组,并且您不想尝试索引到实际上不存在的数组部分。如果您这样做,Java将不会喜欢它。

但这是问题所在-除非您确定知道要结尾的特定文件(在本例中为“ .txt”),否则将塞入其中,因为您无法确定目录名将运行多长时间成为。

长形式的答案可能看起来像这样:

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

如果您碰巧在第一个C://之前出现了.txt,那么这当然是不安全的。

生活就是这样。

相关问题