[JAVA] 자바 문자열 자르기 split(), StringTokenizer 차이 비교

자바 문자열 자르기 split(), StringTokenizer 차이점

 

JAVA에서 문자열을 원하는 구분자로 분리하고 싶을때

split() 과 StringTokenizer 를 사용할 수 있습니다.

split메소드는 인자로 regex(정규표현식)을 사용하기 떄문에
속도측면에서는 StringTokenizer가 빠르다고 볼 수 있습니다. 

 

split() vs StringTokenizer 차이점

구분 설명
split() String클래스의 메소드, 지정한 구분자로 문자열을 나눠 배열에 저장.
공백 문자열도 포함.
StringTokenizer java.util에 포함되어있는 메소드.
지정한 한가지 구분자로 문자열을 나눌수 있다.
구분자를 생략하면 공백이 기본 구분자.

 

StringTokenizer의 생성자입니다.

생성자 설명
StringTokenizer(String str)  구획문자(delimiter)를 인자로 받지않는 생성자.
StringTokenizer(String str, String delim)  구획문자(delimiter)를 인자로 받는 생성자.
StringTokenizer(String str, String delilm
,
 boolean retrunDelims)
구획문자(delimiter)를 인자로 받는 생성자. returnDelims가 true이면 구획문자도 토큰으로 간주한다.


StringTokenizer의 메소드 입니다.

메소드 설명 리턴
nextToken() 다음토큰을 리턴한다. 이전 토큰은 제거한다. String
hasMoreTokens() 리턴할 다음 토큰이 남아있으면 true, 없으면 false int
countTokens() 남아있는 토큰의 갯수를 리턴한다. boolean

 

우리는 코딩을 배우는 입장이니 코딩으로 직접 결과를 보는게 이해하는게 빠르죠.

예제샘플을 보겠습니다.

package main.java;

import java.util.StringTokenizer;

public class test2 {

    public static void main(String[] args) {

        String keyword = "soccer,baseball,basketball"; // 구분자는 콤마(,)
        
        splitTest(keyword); // split 나누기
        
        System.out.println("                  ");
        System.out.println("                  ");
        
        stringTokenizerTest(keyword); //stringTokenizerTest 나누기
    }

    //stringTokenizerTest 메소드
    public static void stringTokenizerTest(String str){

        System.out.println("===== stringTokenizerTest() Start =====");
        StringTokenizer tokenizer = new StringTokenizer(str,",");

        for(int i = 0; tokenizer.hasMoreTokens(); i++){
            System.out.println(i + "번쨰 : " + tokenizer.nextToken());
        }

        System.out.println("===== stringTokenizerTest() End =====");

    }

    //splitTest 메소드
    public static void splitTest(String str){

        System.out.println("===== splitTest() Start =====");
        String split[] = str.split(",");

        int index = 0;
        for(String data : split){
            System.out.println(index + "번쨰 : " + data);
            index++;
        }

        System.out.println("===== splitTest() End =====");

    }


}

 

1. 데이터 + 구분자 + 데이터 형태일 경우 
String keyword = "soccer,baseball,basketball" // 구분자는 콤마(,)

결과 -> 동일합니다.

 

2. 데이터 + 구분자 + 구분자+ 데이터 형태일 경우(중간에 데이터가 없는경우) 

String keyword = "soccer,baseball,,basketball" // 구분자는 콤마(,)

결과 -> split()은 공백문자열도 포함하여 데이터가 나뉘어졌습니다.

 

3. 데이터 + 구분자 + 데이터 + 구분자 형태일 경우(구분자가 마지막에 있는경우) 

String keyword = "soccer,baseball,basketball," // 구분자는 콤마(,)

결과 -> 마지막 구분자는 무시로 동작합니다.

 

split() 과 StringTokenizer 의 차이점에 대해서 알아보았습니다.

상황에 맞게 알맞게 사용하세요!

댓글

Designed by JB FACTORY