Java对多个字符串执行相同的操作

时间:2018-06-16 21:15:39

标签: java arrays string

我有几个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]

...是我现在要做的事情,但我只想写出一次操纵线。

5 个答案:

答案 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]