gpt4 book ai didi

Java - 分割目录路径的正则表达式

转载 作者:搜寻专家 更新时间:2023-10-31 19:41:58 24 4
gpt4 key购买 nike

我正在尝试在 Java 中执行以下操作
给一个像 "/a/b/c" 这样的目录路径 我想得到一个字符串数组作为 ["a", "b", "c"]。代码如下:

private static final String DIRECTORY_PATH_SEPARATOR = "/";  
Iterator iter = testPaths.iterator();

String[] directories;

while( iter.hasNext() ) {

directories = ( ( String ) iter.next() ).split(DIRECTORY_PATH_SEPARATOR);
}

但我得到的数组也是空间。我想获取所有那些 length>0 的字符串。
我怎样才能做到这一点??

最佳答案

如果路径以分隔符开头,您唯一会得到空字符串的地方(在有效路径中)将是第一项。如果它有前导分隔符,则在没有它的路径上拆分。

String path = "/a/b/c";
String[] directories = path.substring(1).split(DIRECTORY_PATH_SEPARATOR);
// { "a", "b", "c" }

正如 OmnipotentEntity 所指出的,我对有效路径的假设是错误的。否则,在使用 split() 时,您必须遍历数组并保留非空字符串。

String path = "/a/b////c";
String[] split = path.split(DIRECTORY_PATH_SEPARATOR);
ArrayList<String> directories = new ArrayList<String>(split.length);
for (String dir : split)
if (dir.length() > 0)
directories.add(dir);

另一种方法是使用实​​际的正则表达式来匹配非分隔符:

String path = "/a/b////c";
ArrayList<String> directories = new ArrayList<String>();
Pattern regex = Pattern.compile("[^" + DIRECTORY_PATH_SEPARATOR + "]+");
Matcher matcher = regex.matcher(path);
while (matcher.find())
directories.add(matcher.group());

关于Java - 分割目录路径的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066945/

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