java - 如何检查表示路径的字符串是否由 Java 中的 3 个子目录组成?

标签 java string algorithm split

进入 Java 应用程序我遇到以下情况,我想请教您如何以巧妙的方式处理它。

我有这个集合(代表一些目录路径的字符串列表):

List<String> path = new ArrayList<String>();

在初始化阶段之后,此路径 列表包含类似于以下字符串对象的内容:

/KMS
/KMS/GEOTHERMAL
/KMS/HYDROELECTRIC
/KMS/SOLAR
/KMS/WIND
/KMS/WIND/BRAZIL
/KMS/WIND/CAMEX
/KMS/WIND/ITALY_EUROPE
/KMS/GEOTHERMAL/BRAZIL
........................
........................
........................

因此,单行表示 path 列表中的单个 String 对象。

我需要做如下操作:

  • 如果字符串代表的路径少于三个子文件夹,则将其丢弃(例如,/KMS/KMS/HYDROELECTRIC 字符串必须被丢弃。

  • 如果字符串表示具有 3 个子文件夹的路径,则打印第三个子文件夹(例如,如果字符串类似于 /KMS/WIND/BRAZIL,则打印 BRAZIL).

显然,我知道我必须遍历我的路径 列表来检查每个 String 对象,但我怎样才能以一种聪明的方式进行先前的检查?

谢谢

最佳答案

你可以使用 Path::getNameCount (Java 7+):

Paths.get(path).getNameCount() == 3

作为筛选列表的条件。

如果您只想从列表中删除无效路径,您可以简单地编写 (Java 8+):

path.removeIf(s -> Paths.get(s).getNameCount() != 3);

对于 Java 6 或更早版本,您可能需要拆分字符串:

List<String> validPaths = ...;
for (String p : path) {
  //CAREFUL: == 4 for a 3-deep path, because the root "" counts for 1
  if (p.split("/").lentgh == 4) valiPaths.add(p);
}

关于java - 如何检查表示路径的字符串是否由 Java 中的 3 个子目录组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960842/

相关文章:

algorithm - 就计算复杂度而言,Big O 表示法 O(log n) 与 O(n+log n) 相同吗?

java - Tomcat 并行部署 - 转到旧版本

java - android fragment 可以在api 3.0上使用,但不能在2.2上使用

python - 替换字符串中多个字符的最有效方法

php - 从 URL 字符串传递多个变量

c# - 列出字符串/整数的所有排列

c++ - 哈希函数和随机排列

java - 如何在iReports中向reportElement标签添加新属性?

java - JSON 查询不更新 TextView

string - 如果不是空字符串,则 Excel 总和