종류

  1. replace()
  2. replaceAll()
  3. replaceFirst()

replace(CharSequence target, CharSequence replacement)

  • 일치하는 문자열(target)을 새로운 문자열(replacement)로 치환한다.
    String str = "가/나/다/라/마/바/사";
    System.out.println(str.replace("/", ",")); // 가,나,다,라,마,바,사
    


replaceAll(String regex, String replacement)

  • 일치하는 정규 표현식(regex)을 새로운 문자열(replacement)로 전부 치환한다.
    • replace()와 유사하지만, .(온점) 같은 경우 정규 표현식으로 모든 문자를 의미하기 때문에 모든 문자열이 치환될 수 있다.
      String str = "가.나.다.라.마.바.사";
      System.out.println(str2.replace(".", ",")); // 가,나,다,라,마,바,사
      System.out.println(str2.replaceAll(".", ",")); // ,,,,,,,,,,,,,
      


replace()와 replaceAll()

  • 두 메소드는 일반 문자열 리터럴을 비교할 땐 실행 결과에 차이가 없다.
  • 하지만 replaceAll()은 문자열 대치에 정규식을 사용하여 조금 더 구체적인 검증이 가능하다.

replaceFirst(String target, String replacement)

  • 첫번째로 일치하는 문자열(target)를 대체할 문자(replacement)로 치환한다.
    String str = "가/나/다/라/마/바/사";
    System.out.println(str.replaceFirst("/", ",")); // 가,나/다/라/마/바/사
    


실무 사용 예시

  • 해시태그가 포함되어 있는 내용에 바꾸고 싶은 내용이 해시태그마다 다를 때 사용한다.
    String contents = reportMapper.findReportTemplate(60001);
    contents = contents.replaceFirst("#", childName)
                  .replaceFirst("#", String.valueOf(progress.getCount()))
                  .replaceFirst("#", progress.getPercent())
                  .replaceFirst("#", previous)
                  .replaceFirst("#", average);
    


참고