
String 문자열에서 원하는 특정 문자를 잘라서 사용해야 할 때가 종종 있다.
이번 포스팅은 문자열을 자르는 방법 중 하나인 substring() 메서드에 대해 다뤄보도록 하겠다.
java.lang.String 클래스의 substring() 메서드는 문자열의 특정 부분을 잘라내는 데 사용된다.
substring() 메서드는 다음과 같이 2가지 형태로 사용할 수 있다.
public String substring(int startIndex)
public String substring(int startIndex, int endIndex)
startIndex부터 이후 모든 문자열을 리턴한다.

위 그림과 같이 substring() 메서드에 파라미터를 1개만 전달(int startIndex)하면, 문자열의 startIndex부터 끝까지의 문자열을 잘라서 리턴한다.
이때 index의 값은 0부터 시작한다.
public class SubstringExample {
public static void main(String[] args) {
String str = "Hello";
System.out.println(str.substring(2)); // "llo"
System.out.println(str.substring(5)); // ""
System.out.println(str.substring(-1)); // StringIndexOutOfBoundsException
System.out.println(str.substring(6)); // StringIndexOutOfBoundsException
}
}
llo
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.base/java.lang.String.substring(String.java:1841)
at SubstringExample.main(SubstringExample.java:8)
1️⃣
str.substring(2);"Hello" 문자열의 index 2('l')부터 마지막까지 문자열을 잘라서 리턴한다.
llo
2️⃣
str.substring(5);문자열의 마지막 index(4) + 1 값을
startIndex로 지정하면, 빈 문자열을 리턴한다.
3️⃣
str.substring(-1);,str.substring(6);
startIndex로 음수값이나 범위를 벗어나는 값을 입력하면
StringIndexOutOfBoundsException이 발생한다.Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.base/java.lang.String.substring(String.java:1841) at SubstringExample.main(SubstringExample.java:8)
startIndex(포함)부터 endIndex(불포함)까지의 문자열을 리턴한다.

substring() 메서드에 2개의 파라미터(startIndex, endIndex)를 전달하면 startIndex부터 endIndex 전까지의 문자열을 잘라서 리턴한다.
public class SubstringExample {
public static void main(String[] args) {
String str = "Hello";
System.out.println(str.substring(2, 4)); // "ll"
System.out.println(str.substring(2, str.length())); // "llo"
}
}
ll
llo
1️⃣
str.substring(2, 4);
startIndex2부터endIndex4 이전까지의 문자열을 잘라서 리턴한다.ll
2️⃣
str.substring(2, str.length());
startIndex2부터 마지막 문자열까지를 잘라서 리턴한다.
str.substring(2)와 결과가 같다.llo
오라클 함수에는 substr이 있어요
SELECT SUBSTR('ABCDEFGH',4,2) 문자열 FROM DUAL;