본문 바로가기
Programming

JAVA StringTokenizer 란 개념 이용방법

by 하하호호 2022. 2. 23.
반응형

StringTokenizer 개념

StringTokenizer 클래스를 사용해서 응용 프로그램에서 문자열을 토큰 단위로 구분해서 만들어주는 클래스다. StringTokenizer를 이용하면 StreamTokenizer 보다 훨씬 간단하게 토큰 값을 구할 수 있다. StringTokenizer 클래스에서 메소드는 식별자, 숫자, 및 인용문자열을 구분하지 않는다. 심지어 주석을 인식해서 건너뛰지도 않는다.

 

토큰을 구분하는 문자열은 구분기호 집합은 생성할 때 토큰별로 따로 지정이 가능하다. StringTokenizer 인스턴스 생성시 returnDelims를 통해 두가지 방법으로 생성이 가능하다. returnDelims가 true인 경우 구분 기호 문자 자체를 토큰으로 간주하여 토큰이 하나의 구분기호 문자거나 구분기호가 아닌 연속 문자의 최대 시퀀스로 생성된다. returnDelims가 false인 경우에는 구분기호 문자가 토큰을 구분하는 역할을 하게 된다. 구분기호를 제외한 연속 문자의 최대 시퀀스로 생성된다.

 

StringTokenizer()를 통해서 문자열을 파싱하게 되면 일반적인 split() 메소드를 사용하는 것 보다 훨씬 간편하게 파싱이 가능하다. split() 메소드를 쓰면 for문을 순회하는 로직이 추가되어야 하고, 불필요한 로직이 될 수 있기 때문이다.

 

StringTokenizer 이용방법(예제)

StringTokenizer st = new StringTokenizer("this is a test");
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }

StringTokenizer을 생성하고 문자열을 입력할 때 delimiter와 returnDelims를 이용하는 방법이 총 3가지가 있다. 첫번째 생성방법은 문자열만 입력하는 것이다. default 값은 공백으로 구분된다. 두번째 방법은 직접 구분기호를 입력하여 토큰화 하는 방법이다. 세번째 방법은 문자열, 구분기호, 구분기호 적용방법(returnDelims)를 포함하여 생성하는 방법이다. returnDelims의 초기값은 false다.

returnDelims를 true값으로 StringTokenizer()를 생성하면 다음과 같은 결과가 나온다.

StringTokenizer 코드

import java.util.StringTokenizer;

public class Test {
    public static void main(String[] args){
        StringTokenizer st = new StringTokenizer("this is a test", " ", true);
            while (st.hasMoreTokens()) {
                System.out.println(st.nextToken());
            }
    }

}

StringTokenizer 출력값

 

즉, returnDelims를 true로 주면서 공백또한 문자열에 구분기호 까지 문자열로 인식하여 출력하게 된다.

this
 
is
 
a
 
test

 

 

StringTokenizer 메소드

StringTokenizer의 추가적인 메소드들은 다음과 같다.

Modifier and TypeMethod and Description

int countTokens()
예외를 발생하기 전 까지 해당 Tokenizer의 호출 가능 횟수를 카운팅 한다.
boolean hasMoreElements()
hasMoreTokens() 메소드와 동일한 값을 반환한다.
boolean hasMoreTokens()
해당 Tokenizer에서 추가적으로 사용할 수 있는 토큰이 있는지 테스트한다. 
Object nextElement()
기본적으로 nextToken() 메소드와 동일하지만 반환값이 String이 아니라 Object라는 차이점을 가진다.
String nextToken()
해당 StringTokenizer에서 다음 토큰을 반환하는 메소드
String nextToken(String delim)
구분기호를 포함한 nextToken() 메소드다.

 

반응형

댓글