为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕盖茨4494581 2024-01-05 16:17:12
我找不到任何模式(算法)来从这种类型的长字符串中提取文件路径。List<Person>newPersonList = new PersonUtility().getAllPerson(\"C://data//person.txt\");我只需要以下路径:C://data//person.txt
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超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


查看完整回答
反对 回复 2024-01-05
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

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"));

当然,如果您碰巧有一个 .txt 出现在第一个 C:// 之前,那是非常不安全的

这就是人生。


查看完整回答
反对 回复 2024-01-05
  • 2 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信