본문 바로가기
Java

[Java] StringTokenizer() / countTokens() / hasMoreTokens() / nextToken()

by bkuk 2022. 10. 5.

StringTokenizer()

 

StringTokenizer 클래스문자열을 지정한 구분자(@,#,$ 등..)로 문자열을 나누어주는 클래스입니다.

그렇게 나누어진 문자열을 토큰(token)이라고 부릅니다.

 

생성자는 아래와 같습니다.

 

생성자 설명
public StringTokenizer(String str); 전달된 매개변수 str을 기본(default) delim으로 분리합니다.
기본 delimiter는 공백 문자들인 " \t\n\r\t"입니다. 
public StringTokenizer(String str,String delim); 특정 delim으로 문자열을 분리합니다.
public StringTokenizer(String str,String delim,boolean returnDelims); str을 특정 delim으로 분리시키는데 그 delim까지 token으로 포함할지를 결정합니다. 그 매매개변수가 returnDelims로 true일시 포함, false일땐 포함하지 않습니다.

 

클래스의 주요 메서드는 아래와 같습니다.

int countTokens() 

남아있는 token의 개수를 반환합니다. 전체 token의 갯수가 아닌 현재 남아있는 token 개수입니다.

 

boolean hasMoreElements() 또는 boolean hasMoreTokens()

다음의 token을 반환합니다.

StringTokenizer는 내부적으로 어떤 위치의 토큰을 사용하였는지 기억하고 있고 그 위치를 다음으로 옮깁니다.

두가지 메소드는 모두 같은 값을 반환합니다.

 

Object nextElement(), String nextToken()

이 두가지 메소드는 다음의 토큰을 반환합니다.

두가지 메소드는 같은 객체를 반환하는데 반환형은 다릅니다.

nextElement는 Object를, nextToken은 String을 반환하고 있습니다.

 


예제 1

String strDate1 = "사과 참외 수박 딸기";
StringTokenizer str1 = new StringTokenizer(strDate1);

    System.out.println( str1.countTokens() );
    // '4' 가 출력됨.

    while( str1.hasMoreTokens() ) {
        System.out.println( str1.nextToken());
    }
    // '사과' 가 출력됨.
    // '참외' 가 출력됨.
    // '수박' 가 출력됨.
    // '딸기' 가 출력됨.

 

예제 2

String strDate2 = "사과#참외#수박#딸기";
StringTokenizer str2 = new StringTokenizer(strDate2, "#");

    System.out.println( str2.countTokens());
    // '4'가 출력됨.

    while( str2.hasMoreTokens() ) {
        System.out.println( str2.nextToken());
    }
    // '사과' 가 출력됨.
    // '참외' 가 출력됨.
    // '수박' 가 출력됨.
    // '딸기' 가 출력됨.

 

댓글