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

How to remove String from an array by checking length and comparing text in Java?

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

假设用户搜索 "Hi Tonki with Monkey"

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

1) 我们想从模式中删除 "With" 和

2) 还想删除尺寸小于 3 的图案,如 "Hi"。

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

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

使用Java1.6

A 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()]);

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