为ArrayList中的每个String元素摆脱空白
问题描述:
答
没有更简单的方法对列表中的每个元素执行某些操作,而不是通过列表中的所有元素并对每个元素执行某些操作。
使用ListIterator
遍历列表,并更新值:
ListIterator<String> itr = list.listIterator();
while (itr.hasNext()) {
itr.set(itr.next().replaceAll("\\s", ""));
}
需要注意的是,以取代所有空白(不仅仅是" "
),你需要使用正则表达式,如这里演示。
答
没有这样更好的选择。与Java 8一种方法是到列表的map
的元素,然后collect
结果:
import static java.util.stream.Collectors.toList;
List<String> al = Arrays.asList("This is a ", "sentence", "\t with some", "\nwhite \n space ");
al.stream().map(s -> s.replaceAll("\\s", "")).forEach(System.out::println);
List<String> cleaned = al.stream().map(s -> s.replaceAll("\\s", "")).collect(toList());
注意的是,在replaceAll
功能\\s
每一个匹配的空白(制表符和换行符太) - 不仅空间而不是第一个。简单的replace
函数只取代第一个模式的出现。
的例子的结果将是以下:
Thisisa
sentence
withsome
whitespace