어제 오늘 내일

[Java StringBuffer] insert() – 원하는 위치에 문자열 삽입하기 본문

IT/Java

[Java StringBuffer] insert() – 원하는 위치에 문자열 삽입하기

hi.anna 2025. 9. 25. 01:16

StringBuffer.insert()는 문자열 끝에 붙이는 append()와 달리,
원하는 인덱스 위치에 새로운 문자열이나 데이터를 삽입할 수 있습니다.
멀티스레드 환경에서도 안전하게 동작한다는 점이 특징입니다.

 

1. insert() 기본 사용법

public synchronized StringBuffer insert(int offset, String str)
  • offset 위치에 str을 삽입
  • 기존 문자열은 잘리지 않고, 오른쪽으로 밀려납니다
StringBuffer sb = new StringBuffer("Java World");
sb.insert(5, "Programming ");
System.out.println(sb.toString());
// 출력: Java Programming World

👉 "Java " 뒤에 "Programming "이 들어갔습니다.

 

2. 다양한 타입 지원

insert()는 문자열뿐 아니라 여러 타입을 지원합니다.

StringBuffer sb = new StringBuffer("Hello!");
sb.insert(5, 123);    // 숫자 삽입
sb.insert(0, true);   // 불리언 삽입
sb.insert(4, 'X');    // 문자 삽입

System.out.println(sb.toString());
// 출력: trueHellXo123!

👉 append()와 마찬가지로 다양한 타입을 처리할 수 있습니다.

 

3. 실전 활용 예제

날짜 포맷팅

StringBuffer sb = new StringBuffer("20250823");
sb.insert(4, "-");
sb.insert(7, "-");
System.out.println(sb.toString());
// 출력: 2025-08-23

👉 문자열을 직접 잘라내지 않고 손쉽게 포맷팅할 수 있습니다.

 

HTML 태그 삽입

StringBuffer sb = new StringBuffer("OpenAI");
sb.insert(0, "<b>");
sb.insert(sb.length(), "</b>");

System.out.println(sb.toString());
// 출력: <b>OpenAI</b>

👉 출력 문자열을 태그로 감싸는 것도 쉽게 구현할 수 있습니다.

 

4. 주의할 점

  • offset 값이 문자열 길이보다 크거나 음수면 StringIndexOutOfBoundsException 발생
  • 인덱스 범위는 반드시 0 <= offset <= length()
StringBuffer sb = new StringBuffer("Test");
// sb.insert(10, "X"); // 예외 발생

 

5. 정리

  • insert(offset, data) → 원하는 위치에 문자열/숫자/문자/불리언 삽입
  • 문자열 포맷팅, 태그 삽입, 문자열 가공에 자주 활용
  • 멀티스레드 환경에서도 안전 (synchronized)

 

🔑 한 줄 정리
👉 문자열 중간에 새로운 내용을 추가하고 싶다면 StringBuffer.insert()를 쓰자!

 

 

반응형
Comments