안녕하세요. 제임스 입니다.
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 | 6 |
위 표를 보시면 "배우기" 를 가져오기 위해서는 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
'Java' 카테고리의 다른 글
[ 자바 코딩 ] NumberFormatException 원인과 해결방법 (1938) | 2021.06.10 |
---|---|
[ 자바 코딩 ] Java split() 함수로 문자열 자르기 (2282) | 2021.06.10 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 문자열 자르기 (split 함수) (1227) | 2018.07.03 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 로또 번호 패턴 만들기 (1220) | 2018.07.02 |
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 주민등록번호 패턴 만들기 (1549) | 2018.06.29 |