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
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:// 之前,那是非常不安全的
这就是人生。
添加回答
举报