gpt4 book ai didi

java - 我真的需要 4 行代码才能从字符串中间获取值吗?

转载 作者:行者123 更新时间:2023-12-02 08:31:18 25 4
gpt4 key购买 nike

我需要从文件路径获取一个值。假设我的路径看起来像任何其他路径:

c:\SomeFolder\SomeOtherfolder\A_Specific_Folder\what_i_want\another_folder\bla.txt

我可以在运行时推断“A_Specific_Folder”的名称,并且我需要获取“what_i_want”。我知道“what_i_want”是一个数字

我目前使用这样的正则表达式:

public String getValueThatIneed(String path) {
String regex = String.format("%s\\\\([0-9]+)\\\\", varContainingNameOfSpecificFolder);
Pattern p = Pattern.compile(regex);
Matcher matcher = compile.matcher(path);
matcher.find(); \\because otherwise i can't use matcher.start()
String myValue = path.substring(matcher.start(1), matcher.end(1));
return myValue;
}

这一切只是为了从一个字符串中获取这个tinyValue。现在假设我必须在方法中使用它,因为我在 10 个地方使用了它。但在其中一个地方,我突然需要对 Stirng 执行一些其他操作,这将再次要求我使用相同的正则表达式执行所有模式、匹配器操作,只是为了获得 matcher.end(1),因为也许这就是全部我需要去那里。

有没有更短的方法来做到这一点?

谢谢。

最佳答案

我将使用文件 API 并检查父名称:

public String find(File file, String folder) {
while (file.getParentFile() != null) {
if(file.getParentFile().getName().equals(folder)) return file.getName();
file = file.getParentFile();
}
return null;
}

或者等效的递归:

public static String find(File file, String folder) {
if(file.getParentFile() == null) return null;
if(file.getParentFile().getName().equals(folder)) return file.getName();
return find(file.getParentFile(), folder);
}

关于java - 我真的需要 4 行代码才能从字符串中间获取值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7267020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com