如何通过检查长度并在Java中比较文本来从数组中删除String?
假设用户搜索“Hi Tonki with Monkey”
String[] pattern = userSearchString.toLowerCase().split("\\s");
1)我们想从模式和
中删除“With”2)也想删除小于3的图案,如“Hi”。
因此模式应仅包含Tonki和Monkey。
如果有人可以从Apache Commons或Guava建议方法,那将是很好的。
使用Java 1.6
答案 0 :(得分:5)
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()]);
如果不需要外部库,则无需使用外部库!