더북(TheBook)

JDK 8 이전 버전이라면 StringBuilder를 사용하는 해법이 정교하다. 이 책의 예제 코드에서 확인할 수 있다.

앞선 해법들은 문자열이 비교적 많을 때 적합한 반면, 문자열이 몇 안 되면 다음 두 해법도 괜찮다. 첫 번째 해법은 + 연산자를 사용한다.

String text = "My high school, " + LS +
  "the Illinois Mathematics and Science Academy," + LS +
  "showed me that anything is possible " + LS +
  "and that you're never too young to think big.";

두 번째 해법은 String.format()을 사용한다.

String text = String.format("%s" + LS + "%s" + LS + "%s" + LS + "%s",
  "My high school, ",
  "the Illinois Mathematics and Science Academy,",
  "showed me that anything is possible ",
  "and that you're never too young to think big.");

TIP ≣ 여러 줄 문자열 내 각 줄은 어떻게 처리할까? JDK 11의 String.lines() 메서드를 사용하면 간단하다. 이 메서드는 주어진 문자열을 줄 구분자(\n, \r, \r\n 지원)로 분할해 Stream<String>으로 변환한다. String.split() 메서드를 사용해도 된다(JDK 1.4부터 사용 가능). 문자열이 너무 많으면 파일에 저장해 한 번에 하나씩 읽고 처리하는 방식(가령 getResourceAsStream() 메서드를 사용하는 등)이 좋다. StringWriterBufferedWriter.newLine()을 사용할 수도 있다.

외부 라이브러리 지원을 받으려면 아파치 커먼즈 랭의 StringUtils.join()과 구아바의 Joiner, 사용자 지정 표기(custom annotation)인 @Multiline을 활용한다.

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