더북(TheBook)

024 문자열 변환

 

어떤 문자열을 또 다른 문자열로(예를 들어 대문자로) 변환한다고 가정하자. Function<? super String, ? extends R> 같은 형태의 함수를 적용하면 된다.

JDK 8에서는 다음의 두 간단한 예제처럼 map()을 쓰면 된다.

// hello world
String resultMap = Stream.of("hello")
  .map(s -> s + " world")
  .findFirst()
  .get();

// GOOOOOOOOOOOOOOOOL! GOOOOOOOOOOOOOOOOL!
String resultMap = Stream.of("gooool! ")
  .map(String::toUpperCase)
  .map(s -> s.repeat(2))
  .map(s -> s.replaceAll("O", "OOOO"))
  .findFirst()
  .get();

JDK 12부터는 transform(Funcion<? super String, ? extends R> f)라는 새 메서드가 등장했다. 위 코드를 transform()으로 다시 작성해보자.

// hello world
String result = "hello".transform(s -> s + " world");

// GOOOOOOOOOOOOOOOOL! GOOOOOOOOOOOOOOOOL!
String result = "gooool! ".transform(String::toUpperCase)
  .transform(s -> s.repeat(2))
  .transform(s -> s.replaceAll("O", "OOOO"));

map()이 보다 일반적이고, transform()은 함수를 문자열에 적용해 결과 문자열을 반환하는 데 쓰인다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.