There is an ArrayList:
public void mainMethod() {
List<String> list = new ArrayList<>();
list.add("'+7913152','2020-05-25 00:00:25'");
list.add("'8912345','2020-05-25 00:01:49'");
list.add("'916952','2020-05-25 00:01:55'");
}
and method which transforms a string:
public String doTransform(String phone) {
String correctNumber;
..... make some changes...
return correctNumber;
}
list.stream().forEach(line -> {
Arrays.stream(line.split(","))... and what else?
How to take only first element of sub-stream (Arrays.stream) and pass it to transforming method? "doTransform()" method is implemented, so don't care about it. I just need to separate '+7913152', '8912345' and '916952', pass it to doTransform() and get an new List:
"'8913152','2020-05-25 00:00:25'"
"'8912345','2020-05-25 00:01:49'"
"'8916952','2020-05-25 00:01:55'"
Do it as follows:
List<String> result = list.stream()
.map(s -> {
String[] parts = s.split(",");
String st = doTransform(String.valueOf(Integer.parseInt(parts[0].replace("'", ""))));
return ("'" + st + "'") + "," + parts[1];
}).collect(Collectors.toList());
Demo:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("'+7913152','2020-05-25 00:00:25'");
list.add("'8912345','2020-05-25 00:01:49'");
list.add("'916952','2020-05-25 00:01:55'");
List<String> result = list.stream()
.map(s -> {
String[] parts = s.split(",");
String st = doTransform(String.valueOf(Integer.parseInt(parts[0].replace("'", ""))));
return ("'" + st + "'") + "," + parts[1];
}).collect(Collectors.toList());
// Display
result.forEach(System.out::println);
}
static String doTransform(String phone) {
return "x" + phone;
}
}
Output:
'x7913152','2020-05-25 00:00:25'
'x8912345','2020-05-25 00:01:49'
'x916952','2020-05-25 00:01:55'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With