split()

String[] split(String regex)

- String[] split(String regex, int limit)

split() 함수는 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴한다.


▷ 예제1) String[] split(String regex)

public class SplitTest{

    public static void main(String[] args){

        String str1 = "my-java-test";
        String[] splitTest = str1.split("-");
        System.out.println( splitTest[0] );  // my
        System.out.println( splitTest[1] );  // java
        System.out.println( splitTest[2] );  // test
        
    }

}

 

split 에 입력받은 특정 문자 "-"를 기준으로 나뉘어져 my / java / test 이렇게 세개로 나뉘어 배열에 저장되었다.

 

▷ 예제2) String[] split(String regex, int limit)

public class SplitTest{

    public static void main(String[] args){

        String str2 = "my,java,test";
        String[] splitTest = str2.split("," , 2);
        System.out.println( splitTest[0] );  // my
        System.out.println( splitTest[1] );  // java,test

    }

}

 

이번 예제에서는 두번째 인자값을 추가로 넣어주었는데 두번째 인자값이 의미하는것은 배열의 크기를 지정하는 것이다.

무슨 소리냐면 원래대로라면 예제1) 처럼 배열의 크기가 3으로 각각 [my, java, test] 이렇게 들어갔어야 하는게

 

배열의 크기를 2로 지정하였으므로 배열의 크기가 2인 배열 즉 두개의 값만 들어가게 설정해놓은것이다.

쉼표를 기준으로 분리되면 ['my', 'java, test'] 로 두개가 들어가는 것이다.

 

 

마지막으로 실수를 많이하고 난 왜 안되는거지? 하라는데로 했는데 같은 의문을 가질수 있는 예제를 보자면

 

▷ 예제3) 메타문자 기준 문자열 자르기

public class SplitTest{

    public static void main(String[] args){

        String str3 = "my.java.test";
        String[] splitTest = str3.split(".");
        System.out.println( splitTest[0] ); //
        System.out.println( splitTest[1] ); //

    }

}

 

" . " 을 기준으로 한번 나누어 보자... 그러면 아무값도 나오지 않는데 " . " 은 다른 의미로 받아들이기 때문이다

그외에 " ? " , " + " , " * " 등의 메타문자는 에러가 뜰텐데 이러한 문자들은 모두 이스케이프 처리

\\(역슬래쉬 두번)를 앞에 입력해주면 처리가 된다.

 

String str3 = "my.java.test";
String[] splitTest = str3.split("\\.",2);
System.out.println( splitTest[0] ); // my
System.out.println( splitTest[1] ); // java.test

 

이런식으로 결과가 나올것이다.

 

물론 이런 방식도 있지만 내가알기론 대부분 replaceAll() 같은것을 사용하여 전부 다른것으로 바꿔주고 나누는 방식을 많이 사용하는것으로 알고있다. 

반응형