java - 从 Collection 中删除长度为 1 的字符串,不包括某些值
问题描述
我有一个字符串类型的数组列表,其中包含许多单词,在某些情况下它们只是单个字母。比如字母“K”。我实际上是在尝试删除所有单实例字符,除了“A”和“I”。这是我尝试的代码/正则表达式,但无济于事:
//removing all single letters
ArrayList<String> newList2 = new ArrayList<String>();
for(String word : words) {
newList2.add(word.replace("[BCDEFGHJKLMOPQRSTUVWXYZ]", ""));
}
words = newList2;
我不应该使用正则表达式吗?有没有更好的方法,或者有没有办法我没有正确使用正则表达式?根据我的理解,我的实现,如果它甚至工作,只会用一个空白点替换它,而不是完全删除元素。我的目标是完全删除元素,如果它存在,也许通过 .remove 方法......不确定如何解决这个问题。(JAVA)
(PS,理想情况下,如果它们很明显,我也会删除“=”和其他符号,但字符是我目前的抱怨)
解决方案
无需为此使用流 api。List#removeIf
在这里就足够了:
list.removeIf(s -> s.length() == 1 && ! List.of("A", "I").contains(s))
注意:这是一个变异操作。
推荐阅读
- clojure - 一个创建函数的函数,这些函数可以查询它们被调用的次数
- javascript - Node中的redis不等待返回值并显示Promise {
} - c# - 我有 GetItemText 的列表框问题,将其替换并将其添加到列表中
- ios - IOS 构建因“ARC 语义问题”而失败
- powershell - 如何使用 PowerShell 将本地文件和路径复制到网络共享?
- java - 如何在 Windows 中的 BlueJ 中进行无限缓冲
- kubernetes - Openshift 中的 JCS 集群
- excel - 尝试在一行中相邻使用 IF 公式,但是在下一列中,该值位于输入 ArrayFormula 的下方单元格中
- ios - 工具栏视图控制器父类未正确显示
- angular - 如何导入 RxJS 合并?