我有几个String变量都需要以相同的方式进行操作。 (小写,删除了符号和数字,并修剪了重复的字符)有没有什么方法可以用循环更改所有这些字符串,而不必列出所有这些字符串并在单独的行上对每个字符串执行操作? / p>
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]
...是我现在要做的事情,但我只想写出一次操纵线。
答案 0 :(得分:1)
您可以使用Stream获取List:
List<String> results = Stream.of(obj1, obj2, obj3, obj4)
.map(s -> s.toLowerCase().replaceAll("[^a-z]", "").[snip])
.collect(toList());
答案 1 :(得分:1)
将所有对象放入列表中,然后将逻辑应用于每个对象,如下所示:
myList.replaceAll(s -> s.toLowerCase().replaceAll("[^a-z]", "").[snip]);
答案 2 :(得分:1)
由于Strings在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);
答案 3 :(得分:0)
您可以创建一个字符串数组,然后循环遍历该数组,并执行所需的操作。
示例:
String arr[] = {"hello","hi","how"};
for(int i = 0; i < arr.length; i++){
arr[i] = arr[i].toLowerCase();
}
答案 4 :(得分:0)
您可以使用Java 8 lambda表达式,如下所示:
String [] obj = {"a8848db", "AD87","AG88","Helo05484"};
Object [] arr = Arrays.stream(obj).map( d -> d.toLowerCase().replaceAll("[^a-z]", "")).toArray();
System.out.println(Arrays.toString(arr)); // Output [adb, ad, ag, helo]