substring() 메서드는 원본 문자열에서 시작 인덱스(beginIndex)부터 종료 인덱스(endIndex)까지의 구간에 해당하는 String 타입 값을 반환합니다. 종료 인덱스를 지정하지 않으면 문자열의 끝까지 추출됩니다. 문자열은 배열과 마찬가지로 인덱스가 '0' 위치에서 시작한다는 점을 반드시 기억해야 합니다.
문법
public String substring(int beginIndex) public String substring(int beginIndex, int endIndex)
beginIndex: 문자열을 자르거나 부분 문자열을 추출하기 시작할 시작 인덱스(위치)입니다.
endIndex: 문자열 자르기를 종료할 인덱스(위치)입니다. 이 인덱스에 해당하는 문자는 결과에 포함되지 않습니다.
이 메서드는 잘라낸 문자열 구간에 해당하는 String 타입을 반환합니다. endIndex를 지정하지 않으면 종료 인덱스는 자동으로 문자열 길이 - 1로 간주됩니다. 만약 beginIndex가 음수이거나 문자열의 길이보다 클 경우에는 IndexOutOfBoundsException 예외가 발생하므로 주의해야 합니다.
예제
public class StringSubstringTest{
public static void main(String[] args) {
String str = "Welcome to Tutorials Point";
System.out.println(str.substring(5));
System.out.println(str.substring(2, 5));
str.substring(6);
System.out.println("str value: "+ str);
String str1 = str.substring(5);
System.out.println("str1 value: "+ str1);
}
}
실행 결과
me to Tutorials Point lco str value: Welcome to Tutorials Point str1 value: me to Tutorials Point
결과 분석
str.substring(5)는 인덱스 5부터 문자열 끝까지 추출하여 "me to Tutorials Point"를 출력하고, str.substring(2, 5)는 인덱스 2부터 4까지의 문자만 잘라내어 "lco"를 출력합니다.
여기서 중요한 점은 Java의 문자열이 불변(immutable)이라는 것입니다. 따라서 str.substring(6)처럼 반환값을 받지 않고 호출하면 아무런 변화가 없으며, 원본 문자열인 str의 값은 그대로 유지됩니다. 잘라낸 결과를 사용하려면 위 예제의 str1처럼 새로운 변수에 할당해야 합니다.