如何通过检查长度和比较 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()]);
如果不需要,则无需使用外部库!
如何通过检查长度和比较 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()]);
如果不需要,则无需使用外部库!