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/