어제 오늘 내일

[Java StringBuilder] replace() – 문자열 일부 교체하기 본문

IT/Java

[Java StringBuilder] replace() – 문자열 일부 교체하기

hi.anna 2025. 9. 21. 01:49

StringBuilder.replace()는 특정 구간의 문자열을 다른 문자열로 바꿀 수 있는 메서드입니다.
기존 문자열을 새로 만들지 않고 내부 버퍼에서 직접 수정하기 때문에 효율적입니다.

 

1. replace() 기본 사용법

public StringBuilder replace(int start, int end, String str)
  • start 인덱스부터 end 직전까지 문자열을 str로 교체
  • end는 포함되지 않는 반개구간
StringBuilder sb = new StringBuilder("Hello Java");
sb.replace(6, 10, "World");
System.out.println(sb.toString());
// 출력: Hello World

👉 "Java""World"로 교체되었습니다.

 

2. 문자열 일부 교체 예제

단어 교체

StringBuilder sb = new StringBuilder("I like C++");
sb.replace(7, 10, "Java");
System.out.println(sb.toString());
// 출력: I like Java

중간 문자열 바꾸기

StringBuilder sb = new StringBuilder("2025/08/22");
sb.replace(4, 5, "-"); // 첫 번째 '/' → '-'
sb.replace(7, 8, "-"); // 두 번째 '/' → '-'
System.out.println(sb.toString());
// 출력: 2025-08-22

👉 특정 위치 문자열 치환에 유용합니다.

 

3. 다른 메서드와 비교

  • delete() + insert() 조합과 비슷하지만, replace()는 두 과정을 한 번에 처리
  • String.replace()와 달리 부분 인덱스를 지정해야 함
StringBuilder sb = new StringBuilder("abcdef");
sb.replace(2, 4, "ZZ");
System.out.println(sb.toString());
// 출력: abZZef

👉 delete(2,4) + insert(2,"ZZ")와 같은 효과입니다.

 

4. 주의할 점

  • 인덱스 범위를 벗어나면 StringIndexOutOfBoundsException 발생
  • start == end인 경우, 해당 위치에 문자열 삽입 효과 발생
StringBuilder sb = new StringBuilder("Hello");
sb.replace(5, 5, " World");
System.out.println(sb.toString());
// 출력: Hello World

👉 이 경우 사실상 insert()처럼 동작합니다.

 

5. 정리

  • replace(start, end, str) → 특정 구간 문자열을 다른 문자열로 교체
  • delete() + insert()를 합친 기능
  • 문자열 포맷 변경, 특정 구간 치환 등에 유용
  • 인덱스 범위 주의 필요

👉 문자열 일부를 바꾸고 싶다면 StringBuilder.replace()가 가장 직관적인 선택!

 

 

반응형
Comments