我有一个String类型的数组列表,其中包含许多单词,在某些情况下它们只是单个字母。例如字母";K";。我本质上是在尝试删除所有的单实例字符,除了";A";以及";我";。以下是我尝试的代码/regex,但没有成功:
//removing all single letters
ArrayList<String> newList2 = new ArrayList<String>();
for(String word : words) {
newList2.add(word.replace("[BCDEFGHJKLMOPQRSTUVWXYZ]", ""));
}
words = newList2;
我应该不使用regex吗?有没有更好的方法,或者有没有一种方法我没有正确使用regex?根据我的理解,如果我的实现有效,它只会用一个空的点来代替它,而不是完全删除元素。。我的目标是完全删除元素(如果存在的话(,也许可以通过.remove方法。。。不知道该怎么办。(JAVA(
(附言,理想情况下,如果"="和其他符号很明显,我也会删除它们,但字符是我目前的抱怨(
无需使用流api。List#removeIf
在这里就足够了:
list.removeIf(s -> s.length() == 1 && ! List.of("A", "I").contains(s))
注:这是一个变异操作。
带循环的解决方案:
for(int i=0; i < newList2.size(); i++){
if(newList2.get(i).length() == 1){
if(!newList2.get(i).equals("A") || !newList2.get(i).equals("I")){
newList2.remove(i)
}
}
}