포스트

문자열에서 마지막 문자 제거하기

문제 상황: StringIndexOutOfBoundsException

개발을 하다보면, 특정 문자열에서 마지막 문자를 제거해야 할 경우가 종종 생깁니다. 스택오버플로우에서도 이에 관한 질문이 많이 올라옵니다. 대표적인 오류로는 StringIndexOutOfBoundsException이 있습니다.

자바에서의 문자열 처리

자바에서 문자열은 불변(immutable)입니다. 즉, 한 번 생성된 문자열은 수정할 수 없습니다. 따라서 마지막 문자를 제거하려면 새로운 문자열을 생성해야 합니다.

substring 메서드 사용

substring 메서드는 문자열의 특정 부분을 새로운 문자열로 반환합니다. 이를 이용하면 마지막 문자를 제거할 수 있습니다.

1
2
String original = "hello";
String modified = original.substring(0, original.length() - 1);

여기서 original.length() - 1는 마지막 문자의 인덱스를 가리킵니다. 그래서 0부터 original.length() - 1까지의 부분 문자열을 가져오면 마지막 문자가 제거된 새로운 문자열을 얻을 수 있습니다.

StringBuilder 사용

StringBuilder는 가변적(mutable) 문자열을 다루는 클래스입니다. deleteCharAt 메서드를 사용하면 특정 인덱스의 문자를 제거할 수 있습니다.

1
2
3
StringBuilder sb = new StringBuilder("hello");
sb.deleteCharAt(sb.length() - 1);
String modified = sb.toString();

sb.length() - 1은 마지막 문자의 인덱스를 나타냅니다. 이 인덱스의 문자를 deleteCharAt 메서드로 제거하면 마지막 문자가 삭제됩니다.

주의사항

문자열이 비어 있거나 null인 경우에는 StringIndexOutOfBoundsException 오류가 발생할 수 있습니다. 이를 방지하기 위해서는 문자열의 길이를 확인하는 조건문을 추가해야 합니다.

1
2
3
if (original != null && original.length() > 0) {
    String modified = original.substring(0, original.length() - 1);
}

이렇게 하면 마지막 문자를 안전하게 제거할 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.