안녕하세요. 제임스 입니다. 

 

Java 사용중 문자열을 원하는 위치에서 잘라야 하는 경우가 있습니다. 

이때 사용하는 하는 java 함수가 바로 substring 입니다. 

이번에는 이 substring 에 대해 자세히 알아 보겠습니다. 

 

 

■ String substring(int index)

 

substring 함수는 두가지가 있으며, 그중 첫번째로 인자값을 하나만 받는 함수 입니다. 

인자값은 int 형으로 substring 하고자 하는 문자열의 앞에서 부터 몇번째 위치인가를 지정하는 값입니다. 

입력받은 인자값을  index 로 해당 위치를 포함하여 이후의 모든 문자열을 리턴 시키는 함수 입니다. 

 

이때 이 index 값은 0 부터 시작 합니다. (첫번째 자리에 있다고 1 부터 시작한다고 생가하면 안됩니다.)

 

String str = "0123456789";

위와 같은 문자열이 있을때 0 ~ 4 까지를 제외한 56789 를 가져오고 싶을 경우 아래와 같이 호출 하면 됩니다. 

str.substring(5)

index 값이 5인 위치 이후 값을 가져 오라고 했으므로 56789 를 리턴하게 됩니다. 

 

 

String str2 = "자바코딩배우기";
System.out.println(str2.substring(4));

위와 같은 문자열을 substring(4) 를 하면 index 가 4 인 위치의 문자를 포함한 문자열을 리턴합니다. 

 

 문자열
index 값  0 1 2 3 4 5

 

위 표를 보시면 "배우기" 를 가져오기 위해서는 index 값을 4 로 입력하면 된다는 것을 알 수 있습니다. 

처음에 언급 했지만 index 는 0 부터 시작합니다 :)

 

 

String str3 = "자바코딩 배워볼까?";
System.out.println(str3.substring(5));

이번 문자열에는 띄어쓰기를 한 것이 보입니다. 물론 이 공백문자도 하나의 문자이므로 한자리를 차지 합니다. 

 

문자열   ? 
index 값 0 1 2 3 4 5 6 7 8 9

 

"배워볼까?" 라는 값을 리턴받기 위해 index 값을 5로 입력했다는 것을 알 수 있습니다. 

 

 

지금까지는 입력 인자값이 한개인 substring 함수를 알아봤습니다. 

이제 입력 인자값이 두개인 substring 에 대해 알아 보겠습니다. 

 

 

■ String substring(int beginIndex, int endIndex)

 

이번에 알아볼 substring 함수는 입력 인자값이 두개 입니다. 

 

첫번째 입력 받는 인자 값은 인자값이 한개인 substring 과 같이 가져올 문자열의 시작 부분을 지정합니다. 

두번째 입력 받는 인자 값은 가져올 문자열의 끝 부분을 지정 하는 것으로 substring(in index) 가 시작부분만 지정하고 나머지 모든 문자열을 리턴하는것과 차이가 있습니다. 

 

beginIndex 위치에서 시작하여 endIndex 전 위치까지의 값을 리턴 합니다. 

 

 

다음 문자열중 356512 값만 가져오는 것을 연습해 보겠습니다. 

String str = "0000003565120";
System.out.println(str.substring(6, 12));

 

 

문자열 0 0 0 0 0 0 3 5 6 5 1 2 0
 index 값 0 1 2 3 4 5 6 7 8 9 10 11 12

 

시작 인덱스 값을 6 으로 끝나는 인덱스 값을 12로 설정하여 원하는 356512 라는 값을 리턴 받을 수 있습니다. 

substring(6, 12) ==> index 6 위치에서 index 12 - 1 위치 (11 자리) 까지의 값을 리턴 합니다.

 

String str = "0000003565120";
System.out.println(str.substring(6, 13));
System.out.println(str.substring(6));

만약 위와 같이 substring(6, 13) 을 했다면?

그리고 substring(6) 을 했다면? 

결과 값은 어떻게 나올까요? 

 

예상 하시는 데로 3565120 이라는 동일한 리턴 값을 받게 됩니다. 

 

System.out.println(str.substring(6, 14));

만약 위와 같이 endIndex 값을 14로 주게 되면 어떻게 될까요? 

index 범위를 벗어나는 값을 입력 했으므로 아래와 같이 오류가 발생하게 됩니다. 

 

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 14

 

 

 

substring(int index) 보다는 substring(int beginIndex, int endIndex) 를 많이 사용 하게 되실겁니다. 

알아 두면 정말 유용하고, 꼭 알아 두어야 하는 java 함수 입니다. 

 

 

 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,