어제 오늘 내일

[Java StringBuilder] charAt(), setCharAt() – 특정 문자 읽기와 수정하기 본문

IT/Java

[Java StringBuilder] charAt(), setCharAt() – 특정 문자 읽기와 수정하기

hi.anna 2025. 9. 23. 01:58

문자열에서 특정 위치의 문자를 읽거나 바꾸고 싶을 때, String은 불변(immutable)이라 새로운 문자열을 생성해야 하지만,
StringBuilder는 가변(mutable)이라 원하는 위치의 문자를 직접 읽고 수정할 수 있습니다.

 

1. charAt() – 특정 문자 읽기

public char charAt(int index)
  • 지정한 위치의 문자를 반환
  • 인덱스는 0부터 시작
StringBuilder sb = new StringBuilder("Java");
char c = sb.charAt(2);
System.out.println(c);
// 출력: v

👉 "Java"의 인덱스 2에 있는 문자는 'v'입니다.

 

2. setCharAt() – 특정 문자 수정

public void setCharAt(int index, char ch)
  • 지정한 위치의 문자를 새로운 문자로 교체
StringBuilder sb = new StringBuilder("Java");
sb.setCharAt(0, 'K');
System.out.println(sb.toString());
// 출력: Kava

👉 첫 번째 문자 'J''K'로 바뀌었습니다.

 

3. 실전 활용 예제

문자열 일부 수정

StringBuilder sb = new StringBuilder("Hello World");
sb.setCharAt(6, 'w');
System.out.println(sb.toString());
// 출력: Hello world

👉 "World"의 첫 글자를 소문자로 바꿀 수 있습니다.

문자열 탐색 후 교체

StringBuilder sb = new StringBuilder("a-b-c-d");
for (int i = 0; i < sb.length(); i++) {
    if (sb.charAt(i) == '-') {
        sb.setCharAt(i, '_');
    }
}
System.out.println(sb.toString());
// 출력: a_b_c_d

👉 특정 문자를 다른 문자로 변환하는 데 활용 가능합니다.

 

4. 주의할 점

  • 인덱스 범위를 벗어나면 StringIndexOutOfBoundsException 발생
StringBuilder sb = new StringBuilder("Java");
// sb.charAt(10);  // 예외 발생
// sb.setCharAt(10, 'X'); // 예외 발생

👉 반드시 0 <= index < length() 범위 내에서만 사용해야 합니다.

 

5. 정리

  • charAt(index) → 특정 위치 문자 읽기
  • setCharAt(index, ch) → 특정 위치 문자 교체
  • 문자열 일부 수정, 특정 문자 변환 등에 유용
  • 인덱스 범위 체크 필수

 

🔑 한 줄 정리
👉 특정 문자만 읽거나 수정하려면 StringBuilder.charAt()setCharAt()을 활용하자!

 

 

반응형
Comments