StringTokenizer 클래스

 

public class StringTokenizer extends Object implements Enumeration<Object> 

 

The string tokenizer class allows an application to break a string into tokens. The tokenization method is much simpler than the one used by the StreamTokenizer class. The StringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments.


The set of delimiters (the characters that separate tokens) may be specified either at creation time or on a per-token basis.

 

An instance of StringTokenizer behaves in one of two ways, depending on whether it was created with the returnDelims flag having the value true or false:

  - If the flag is false, delimiter characters serve to separate tokens. A token is a maximal sequence of consecutive characters that are not delimiters.

  - If the flag is true, delimiter characters are themselves considered to be tokens. A token is thus either one delimiter character, or a maximal sequence of consecutive characters that are not delimiters.


A StringTokenizer object internally maintains a current position within the string to be tokenized. Some operations advance this current position past the characters processed.

 

A token is returned by taking a substring of the string that was used to create the StringTokenizer object.

…JavaAPI(http://docs.oracle.com/javase/7/docs/api/)

 

StringTokenizer클래스는 문자열로부터 토큰을 추출하는 기능을 갖습니다. 여기서 토큰(token)이란 문자열을 구성하는 단위를 말합니다.

 

토큰을 추출하는 예제프로그램 StringTokenizerEx1

import java.util.StringTokenizer; //StringTokenizer클래스를 import합니다.

class StringTokenizerEx1 {
	public static void main(String[] args) {
		StringTokenizer stok = new StringTokenizer("사과 배 복숭아"); //StringTokenizer클래스 생성
		while(stok.hasMoreTokens()){   // 토큰이 있는 동안만 while문 안에서 반복
			System.out.println(stok.nextToken());	// 토큰을 추출하여 출력합니다.
		}
		//더이상 불러올 토큰이 없을 때 java.util.NoSuchElementException 이 발생합니다.
		//Exception처리를 해주거나 hasMoreTokens()메소드를 이용해서 처리합니다.
	}
}

 

사과

복숭아

 

소스에 주석처리한것과 같이 nextTokn()메소드를 이용해서 문자열로부터 토큰을 추출합니다.

더이상 추출할 토큰이 없을경우 Exception이 발생하기 때문에, hasMoreTokens()메소드와 while문을 사용했습니다.

 

public boolean hasMoreTokens()

 

Tests if there are more tokens available from this tokenizer's string. If this method returns true, then a subsequent call to nextToken with no argument will successfully return a token.


Returns:
true if and only if there is at least one token in the string after the current position; false otherwise.

…JavaAPI(http://docs.oracle.com/javase/7/docs/api/)

 

public String nextToken()

 

Returns the next token from this string tokenizer.
Returns:
the next token from this string tokenizer.
Throws:
NoSuchElementException - if there are no more tokens in this tokenizer's string.

…JavaAPI(http://docs.oracle.com/javase/7/docs/api/)

 

 

주어진 구획문자를 기준으로 토큰을 추출하는 예제프로그램 StringTokenizerEx2

import java.util.*;
class StringTokenizerEx2 {
	public static void main(String[] args) {
		StringTokenizer stok = new StringTokenizer("사과/배/복숭아+수박/바나나/감+딸기/포도/키위","/+");
		//주어진 문자열을 '/'와 '+'로 구분하여 토큰을 추출합니다.
		while(stok.hasMoreTokens()){
			System.out.println(stok.nextToken());
		}
	}
}

 

사과

복숭아
수박
바나나

딸기
포도
키위

 

처음 StringTokenizer 객체를 생성할 때 위와같이 선언하면 구획문자를 기준으로 토큰을 추출할 수 있습니다.

이러한 구획문자들도 하나의 토큰으로 추출하고 싶다면 뒤에 true를 추가하면 됩니다.

다음 프로그램은 구획문자를 토큰으로 추출하여 사용하는 예제입니다.

 

StringTokenizerEx3

import java.util.*;
class StringTokenizerEx3 {
	public static void main(String[] args) {
		StringTokenizer stok = new StringTokenizer("사과/배/복숭아+수박/바나나/감+딸기/포도/키위","/+",true);
		//true값을 넣어주면 '/'와 '+'도 토큰으로 추출할 수 있다.
		while(stok.hasMoreTokens()){
			String str = stok.nextToken();
			if(str.equals("/")) // '/'과 같으면 \t출력
				System.out.print("\t");
			else if(str.equals("+")) // '/'과 같으면 \n출력
				System.out.print("\n");
			else
				System.out.print(str); // 그 외의 토큰은 그냥 출력
		}
	}
}

 

사과      배           복숭아
수박      바나나     감
딸기      포도        키위

 

 

'2013 > Java' 카테고리의 다른 글

[Java] 버블정렬(1)  (0) 2013.11.08
[Java] Radom클래스(1)  (0) 2013.11.08
[Java] StringTokenizer 클래스(1)  (0) 2013.11.07
[Java] 파일 입출력에 사용되는 자바 클래스들(3)  (0) 2013.11.05
[Java] 자판기 프로그램(2)  (0) 2013.10.31
[Java] 자판기 프로그램(1)  (0) 2013.10.31