본문 바로가기
JAVA

[JAVA] StringTokenizer 클래스

by snow_white 2022. 1. 20.

StringTokenizer

StringTokenizer 클래스는 문자열을 토큰으로 나누는 방법이다. 

 

프로그래밍 언어에서 말하는 토큰이란 언어가 사용하는 기본'단어'를 말한다.

 

public static void main(String[] agrs) {

위의 문장에서 토큰은 public, static, void, main, (, String, [, ], args, ), { 등이며

이러한 토큰을 제외한 공백문자(스페이스, 탭 문자, 개행 문자 등)는 문자열 내에서 사용되는 경우가 아닌 이상은

모두 아무런 의미를 가지지 않는다.

토큰은 키워드(keyword)나 연산자, 또는 ‘,’, ‘;’, ‘(‘ 등의 구분자(delimiter)와 같은 특수한 형태의 토큰과

명칭(identifier)이나 리터럴(literal)과 같은 일반적인 형태의 토큰으로 나눌 수 있다.

 

생성자

생성자 설명
StringTokenizer(String str) 지정된 문자열에 대한 문자열 토크나이저를 생성합니다.
StringTokenizer(String str, String delim) 지정된 문자열에 대한 문자열 토크나이저를 생성합니다.
StringTokenizer(String str, String delim, boolean returnDelims) 지정된 문자열에 대한 문자열 토크나이저를 생성합니다.

 

메소드

반환형 메소드 설명  
int countTokens()
nextToken예외를 생성하기 전에 이 토크나이저의 메서드를 호출할 수 있는 횟수를 계산합니다.
returns:
현재 구분 기호 집합을 사용하여 문자열에 남아 있는 토큰 수 반환
boolean hasMoreElements()
이 토크나이저의 문자열에서 사용할 수 있는 토큰이 더 있는지 테스트합니다.
returns:
토큰이 있는 경우 true, 그렇지 않은 경우 false 반환
boolean hasMoreTokens()
이 토크나이저의 문자열에서 사용할 수 있는 토큰이 더 있는지 테스트합니다. 이 메서드가 true 를 반환하면 인수 없이 nextToken에 대한 토큰을 반환합니다.
returns:
현재 위치 뒤에 하나 이상의 토큰이 있는 경우 true, 그렇지 않으면 false 반환
Object nextElement()
nextToken선언된 반환 값이 String이 아닌 것을 제외하고 메서드 와 동일한 값을 반환합니다.
returns:
문자열의 다음 토큰 반환
String nextToken()
이 문자열 토크나이저에서 다음 토큰을 반환합니다.
returns:
  다음 토큰 반환
throws: 
  NoSuchElementException 
- 이 토크나이저의 문자열에 더 이상 토큰이 없는 경우
String nextToken(String delim)
구분 기호(delim)를 기준으로 문자열을 나누어 이 문자열 토크나이저에서 다음 토큰을 반환합니다.
returns:
다음 토큰 반환
throws:
  NoSuchElementException 
- 이 토크나이저의 문자열에 더 이상 토큰이 없는 경우.
  NullPointerException 
- delim인 경우 null

 

StringTokenizer는 토큰화할 문자열 내의 현재 위치를 내부적으로 유지 관리한다.

먼저 문자열을 기본 구분자인 공백으로 토큰화한다.

 

만약 공백이 아닌 콤마( , ) 구분자를 사용하고 싶다면 StringTokenizer(String str, String delim) 생성자 형식으로

delim에 ","를 넣는다.

 

직접 소스 코드를 살펴보자.

1. while문의 조건식에 hasMoreTokens() 함수로 현재 StringTokenizer 객체에 남아있는 토큰이 있는지 확인한다.

2. 남아있는 토큰 수를 확인하기 위해 countTokens() 함수로 토큰 수를 받아 변수에 저장한다.

3. 다음 토큰을 가져와 출력하기 위해 nextToken() 함수를 사용한다.

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {	// 토큰이 존재한다면 true 반환
	int count = st.countTokens(); // 현재 남아있는 전체 토큰 수 저장
    System.out.print("count -> " + count + ", ");

    System.out.println(st.nextToken());
}

출력 결과

count -> 4, this
count -> 3, is
count -> 2, a
count -> 1, test

 

[참고]

https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

 

StringTokenizer (Java Platform SE 7 )

Constructs a string tokenizer for the specified string. All characters in the delim argument are the delimiters for separating tokens. If the returnDelims flag is true, then the delimiter characters are also returned as tokens. Each delimiter is returned a

docs.oracle.com

 

댓글