[Java] 문자열 자르기, substring 사용법 및 예제

    자바(Java)에서 문자열을 자르는 방법으로 substring을 제공하고 있다.

    substring은 2가지 방식의 인자값을 받고 있으며 방식은 아래와 같다.

     

    substring 사용법

    String substring(int startIndex);
    String substring(int startIndex, int endIndex);

    startIndex는 시작지점의 인덱스 값이고, endIndex는 종료 지점의 인덱스 값이다.

    두 방식 모두 return 값으로 문자열(String)이 리턴된다.

     

    사용 예제

    public class Main {
    
        public static void main(String args[]) {
            String example = "동해물과 백두산이 마르고 닳도록";
            System.out.println("example.length->" + example.length());
    
            System.out.println(example.substring(5));
            System.out.println(example.substring(5,8));
        }
    }
    example.length->17
    백두산이 마르고 닳도록
    백두산

    example에는 애국가의 일부가 담겨져 있고, 전체 문자열의 크기는 17개의 문자로 되어 있다.

    첫번째 substring(5)의 경우 "백두산이 마르고 닳도록"까지 리턴이 되는데 인자값이 하나만 넣을 경우, index 시점부터 마지막 문자열까지 가져오라라는 말과 동일하다.

     

    인덱스는 시작이 0으로 시작되며, 각각 0:동, 1:해, 2:물, 3:과, 4:공백, 5:백으로 인덱스가 잡히기 때문에 백이 있는 위치가 5이다. 8의 위치는 백두산이에서 마지막인 이인데, 이가 위치한 곳까지 가지고 오라고 했기 때문에 이를 시각적으로 보면 다음과 같다.

     

    5:8의 인덱스를 표현한 그림

     

    간혹, substring이 시작과 종료 시점이 헷갈릴 때에는 차라리 종료와 시작의 값을 빼서, 시작시점부터 몇글자까지인지 이해하는 것이 쉬울 수 있다. 즉 8에서 5를 빼면, 3이라는 숫자가 남기 때문에 백에서 시작하며 3글자까지인 "백두산"이 뽑힌다는 것을 쉽게 알 수 있다.

     

     

    에러가 발생할 경우

    substring의 경우 초보자분들이 많이 실수 하는 것이 length를 체크하지 않고 막 쓰는 경우이다. 

     

    에러 발생 예제

    public class Main {
    
        public static void main(String args[]) {
            String example = "동해물과 백두산이 마르고 닳도록";
            System.out.println(example.substring(15,18));
        }
    }
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 18
    at java.lang.String.substring(String.java:1963)
    at Main.main(Main.java:5)

    substring에서 발생하는 에러는 StringIndexOutofBoundsException이 주로 발생하며, 범위를 벗어난 값을 호출할 때 발생을 한다. 즉, substring을 사용할 때에는 인덱스 값을 명시하지 말고, 값을 체크해서 사용하는 버릇이 중요하다.

     

    Length값을 습관적으로 체크한다

    public class Main {
    
        public static void main(String args[]) {
            String example = "동해물과 백두산이 마르고 닳도록";
    
            if(example.length() >= 18) {
                System.out.println(example.substring(15, 18));
            } else {
                System.out.println("값이 범위를 벗어 났음");
            }
        }
    }
    값이 범위를 벗어 났음

    위와 같이 substring을 하기 전에는 습관적으로 length값을 체크하는 것이 중요하다.

     

    반응형

    댓글

    Designed by JB FACTORY