我有几个字符串变量,它们都需要以相同的方式进行操作。(小写,去掉符号和数字,修剪重复的字符)有没有什么方法可以用循环改变所有这些字符串,而不是列出所有字符串并在单独的行上对每个字符串执行操作?
obj1 = obj1.toLowerCase().replaceAll("[^a-z]", "").[snip]
obj2 = obj2.toLowerCase().replaceAll("[^a-z]", "").[snip]
obj3 = obj3.toLowerCase().replaceAll("[^a-z]", "").[snip]
obj4 = obj4.toLowerCase().replaceAll("[^a-z]", "").[snip]
我现在要做的是,...is,我只想写出一次操作线。
发布于 2018-06-17 05:18:41
您可以使用Stream来获取列表:
List<String> results = Stream.of(obj1, obj2, obj3, obj4)
.map(s -> s.toLowerCase().replaceAll("[^a-z]", "").[snip])
.collect(toList());
发布于 2018-06-17 05:19:11
将所有对象放入列表中,然后将逻辑应用于每个对象,如下所示:
myList.replaceAll(s -> s.toLowerCase().replaceAll("[^a-z]", "").[snip]);
发布于 2018-06-17 06:09:48
由于字符串在Java中的实现方式,您无法优化对象的更新。
但是,您可以将转换提取到一个方法中,并在每个变量上调用它,例如(未测试)
public String manipulate(String s) {
return s.toLowerCase().replaceAll("[^a-z]", "").[snip];
}
....
obj1 = manipulate(obj1);
obj2 = manipulate(obj2);
obj3 = manipulate(obj3);
obj4 = manipulate(obj4);
https://stackoverflow.com/questions/50891798
复制相似问题