java - 如何通过检查长度和比较 Java 中的文本从数组中删除字符串?

标签 java arrays guava apache-commons

Java 如何通过检查长度和比较文本从数组中删除字符串?

假设用户搜索“Hi Tonki with Monkey”

String[] pattern = userSearchString.toLowerCase().split("\\s");

1) 我们想从模式中删除“With”

2) 还想删除小于 3 大小的模式,如“Hi”。

所以模式应该只包含 Tonki 和 Monkey。

如果有人能从 Apache Commons 或 Guava 中推荐方法,那将是错误的。

使用 Java 1.6

最佳答案

Java 8 的解决方案是 Stream数组并仅过滤您想要的元素,然后将其收集回数组中:

Arrays.stream(pattern)
      .filter(word -> !word.equals("with"))
      .filter(word -> word.length() >= 3)
      .toArray(String[]::new);

Java 8 之前的解决方案是手动过滤数组。但是,我们必须创建一个新数组;但是因为我们事先不知道新数组的大小,所以我们可以使用 List<String>并在添加其各自的元素后将其收集到一个数组中:

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

for (String word : pattern) {
    if (word.length() < 3 || word.equals("with")) {
        continue;
    }

    list.add(word);
}

list.toArray(new String[list.size()]);

如果不需要,则无需使用外部库!

关于java - 如何通过检查长度和比较 Java 中的文本从数组中删除字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43930533/

相关文章:

java - 如何在jsp中通过方法 `get()`访问对象?

Java Scanner 出现在 print() 之前

arrays - 如何在 Go 中清除和重用数组(不是 slice )?

javascript - 如何在javascript中创建一个仅包含特定位置元素的数组?

javascript - 如何完善这个 JS 数组搜索功能?

java - 以原子方式获取 ConcurrentHashMultiset 中的 Multiset 条目( Guava )

java - 发送 key 时获取值

java - 如何从 Eclipse 中运行的 ant 文件中查找 Eclipse 的路径?

java - 为什么 JVM 不会在引用计数为 0 时立即销毁资源?

java - 将 hbase 移植到 .net 上