어제 오늘 내일

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

IT/Java

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

hi.anna 2025. 9. 26. 00:46

StringBuffer.replace()는 문자열의 특정 범위를 지정해서 새로운 문자열로 교체할 수 있는 메서드입니다.
삽입이나 삭제를 따로 하지 않고 한 번에 치환할 수 있어 문자열 수정 작업에 자주 사용됩니다.

 

1. replace() 기본 사용법

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

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

 

2. 문자열 교체 예제

단어 교체

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

포맷 변경

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

👉 문자열 일부를 치환할 때 직관적이고 편리합니다.

특정 위치 치환

StringBuffer sb = new StringBuffer("abcdef");
sb.replace(2, 4, "ZZ");
System.out.println(sb.toString());
// 출력: abZZef

👉 delete(2,4) + insert(2,"ZZ")의 효과를 한 번에 얻을 수 있습니다.

 

3. 주의할 점

  • 인덱스 범위를 벗어나면 StringIndexOutOfBoundsException 발생
  • start == end이면 단순 삽입처럼 동작
StringBuffer sb = new StringBuffer("Hello");
sb.replace(5, 5, " World");
System.out.println(sb.toString());
// 출력: Hello World

👉 사실상 insert()와 같은 효과를 냅니다.

 

4. 정리

  • replace(start, end, str) → 특정 구간 문자열을 교체
  • 삭제와 삽입을 합친 기능
  • 문자열 포맷 변경, 특정 단어 치환 등에 활용
  • 스레드 안전 (synchronized)

🔑 한 줄 정리
👉 문자열 일부를 바꿀 때는 StringBuffer.replace()로 한 번에 해결하자!

 

 

반응형
Comments