어제 오늘 내일

[Java StringBuffer] delete(), deleteCharAt() – 문자열 삭제하기 본문

IT/Java

[Java StringBuffer] delete(), deleteCharAt() – 문자열 삭제하기

hi.anna 2025. 9. 25. 12:41

StringBuffer는 문자열을 다루는 데 있어 삽입, 교체뿐 아니라 삭제 기능도 제공합니다.
특히 delete()deleteCharAt() 메서드를 이용하면 원하는 범위나 특정 문자 하나를 간단히 지울 수 있습니다.

 

1. delete() 기본 사용법

public synchronized StringBuffer delete(int start, int end)
  • start 인덱스부터 end 직전까지 삭제
  • end 인덱스는 포함되지 않음
StringBuffer sb = new StringBuffer("Java Programming");
sb.delete(5, 16);
System.out.println(sb.toString());
// 출력: Java 

👉 "Programming"이 삭제되고 "Java "만 남습니다.

 

2. deleteCharAt() 기본 사용법

public synchronized StringBuffer deleteCharAt(int index)
  • 특정 인덱스의 문자 하나만 삭제
StringBuffer sb = new StringBuffer("abcdef");
sb.deleteCharAt(2);
System.out.println(sb.toString());
// 출력: abdef

👉 인덱스 2에 있던 'c'가 삭제되었습니다.

 

3. 실전 활용 예제

문자열 중복 공백 제거

StringBuffer sb = new StringBuffer("Hello  World");
sb.deleteCharAt(5);
System.out.println(sb.toString());
// 출력: Hello World

👉 불필요한 공백을 쉽게 제거할 수 있습니다.

날짜 포맷 변경

StringBuffer sb = new StringBuffer("2025-08-23");
sb.delete(4, 5); // 첫 번째 '-' 삭제
sb.delete(6, 7); // 두 번째 '-' 삭제
System.out.println(sb.toString());
// 출력: 20250823

👉 문자열 포맷을 자유롭게 변형할 수 있습니다.

문자열 길이 줄이기

StringBuffer sb = new StringBuffer("This is a long text");
sb.delete(10, sb.length());
System.out.println(sb.toString());
// 출력: This is a 

👉 substring처럼 문자열을 잘라내는 효과를 낼 수 있습니다.

 

4. 주의할 점

  • 인덱스 범위를 벗어나면 StringIndexOutOfBoundsException 발생
  • delete(start, end)에서 start == end라면 아무 일도 일어나지 않음
StringBuffer sb = new StringBuffer("Test");
// sb.delete(10, 12); // 예외 발생

 

5. 정리

  • delete(start, end) → 특정 범위 삭제
  • deleteCharAt(index) → 단일 문자 삭제
  • 문자열 포맷 변경, 공백 제거, 잘라내기 등에 활용
  • 스레드 안전 (synchronized)

 

🔑 한 줄 정리
👉 문자열 일부를 지우려면 StringBuffer.delete() 또는 deleteCharAt()을 활용하자!

 

 

반응형
Comments