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

fat*_*ael 1 java arrays apache-commons guava

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

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

String[] pattern = userSearchString.toLowerCase().split("\\s");
Run Code Online (Sandbox Code Playgroud)

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

2)也想删除小于3的图案,如"Hi".

因此模式应仅包含Tonki和Monkey.

如果有人可以从Apache Commons或Guava建议方法,那将是很好的.

使用Java 1.6

Jac*_* G. 5

Java 8解决方案将用于Stream数组并仅过滤所需的元素,并将其收集回数组:

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

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

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()]);
Run Code Online (Sandbox Code Playgroud)

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