예를들어서 String 타입의 값이 aAb1B2cC34oOp의 값을 갖고 있는 아래의 변수가 존재한다고 가정 했을때 정수 부분만 출력하고 싶을 때 어떻게 해야하는지 공부해보 았습니다.
String str = "aAb1B2cC34oOp";
String my_string ="aAb1B2cC34oOp";
String[] strArr = my_string.replaceAll("[^0-9]" , "").split("");
int answer = 0;
for(String s : strArr) {
answer += Integer.parseInt(s);
}
System.out.println(answer); //10
int sum = my_string.chars()
.mapToObj(i -> (char) i)
.filter(ch -> Character.isDigit(ch))
.map(obj -> String.valueOf(obj))
.mapToInt(s -> Integer.valueOf(s)).sum();
System.out.println(sum); // 10;
// 최종연산collect를 사용해서 joining 사용해봄
String result = my_string.chars()
.mapToObj(i -> (char) i).filter(ch -> Character.isDigit(ch))
.map(obj -> String.valueOf(obj))
.mapToInt(s -> Integer.valueOf(s))
.mapToObj(String::valueOf)
.collect(Collectors.joining(",", "<", ">"));
System.out.println(result); //<1,2,3,4>
Function<T,R>
에서 T만 제네릭 타입으로 전달받고 R은 int로 정해져있습니다.LongFunction<U>
,DoubleFunction<U>
를 파라미터로 받습니다.Function<T,R>
에서 T 가int,long,double 이고, R 이 U가 됩니다.