【问题标题】:How can I extract path from a large string using JAVA?如何使用 JAVA 从大字符串中提取路径?
【发布时间】:2019-10-28 05:58:11
【问题描述】:

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

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

我只需要这样的路径:

C://data//person.txt

【问题讨论】:

  • "ListnewPersonList = new PersonUtility().getAllPerson ("C://data//person.txt");"将其视为字符串。
  • string.substring(50,string.length-3)?
  • 预期输出:C://data//person.txt
  • 像这样:myString.replaceAll(".(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "").replace("\"","");。它得到的解释与提供的问题一样多。

标签: java regex file


【解决方案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

【讨论】:

  • @rezowantalukder 很高兴它对您有所帮助。
【解决方案2】:

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

一般来说,类名应以大写字母开头,变量以小写字母开头。

但是让我们假设你是正确的并且我们在其他地方声明了

String ListNewPersonList ...

好的,所以你有一个字符串。 Java 有一大堆固定在 String 上的方法来操作它——甚至是正则表达式(让 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,那当然是非常不安全的

这就是生活。

【讨论】:

  • 虽然您的回答并非对所有目录都正确,但我仍然感谢您为回答我的问题所做的努力。谢谢兄弟.....
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多