문자열을 지정된 구분자(delimiter)를 기준으로
여러 개의 토큰(token)으로 분리할 때 사용한다.
이 클래스를 사용하면 문자열을 편리하게 파싱(parsing)(쪼갠다.)할 수 있다.
StringTokenizer클래스의 생성자는 다음과 같다.
절달된 매개변수 str을 기본(default) delim(경계)으로 분리한다.
기본 delimiter(구획 문자)는 공백 문자들인 " \t\n\r\t"이다.
public StringTokenizer(String str) {
this(str, " \t\n\r\f", false);
}
특정 delim으로 문자열을 분리한다.
public StringTokenizer(String str, String delim) {
this(str, delim, false);
}
public StringTokenizer(String str, String delim, boolean returnDelims) {
currentPosition = 0;
newPosition = -1;
delimsChanged = false;
this.str = str;
maxPosition = str.length();
delimiters = delim;
retDelims = returnDelims;
setMaxDelimCodePoint();
}
str을 특정 delim으로 분리시키는데 그 delim까지 token으로 포함할지를 결정한다.
delim을 지정해주지 않으면 기본적으로 공백(띄어쓰기)이 delim이 된다.
그 매개변수가 returnDelims로 true일시 포함, false일땐 포함하지 않는다.
import java.util.StringTokenizer;
남아있는 token의 개수를 반환한다.
전체 token의 갯수가 아닌 현재 남아있는 token의 개수를 반환한다.
StringTokenizer는 내부적으로 어떤 위치의 토큰을 사용하였는지 기억하고 있다.
토큰의 시작위치(마우스 커서)를 기준으로 토큰이 남아있는지 확인하고 반환한다.
지정된 문자열 str을 지정된 구분자 delim을 기준으로
분리하는 StringTokenizer 객체를 생성한다.
위에서 공부한 생성자와 메서드를 사용해보자.
import java.util.StringTokenizer;
public class TokenizerTest {
public static void main(String[] args) {
String str = "동해물과 백두산이 마르고 닳도록";
StringTokenizer st = new StringTokenizer(str, " ");
// ==토큰시작위치==
// (마우스 커서)"동해물과" "백두산이" "마르고" "닳도록"
System.out.println(st.countTokens()); // 4
System.out.println(st.hasMoreTokens()); // true(마우스 커서를 기준으로 다음 토큰이 남아있는지 확인)
System.out.println(st.hasMoreElements()); // true(마우스 커서를 기준으로 다음 토큰이 남아있는지 확인)
System.out.println(st.nextToken()); // 동해물과
System.out.println(st.nextToken()); // 백두산이
System.out.println(st.nextToken()); // 마르고
System.out.println(st.nextToken()); // 닳도록
System.out.println(st.hasMoreTokens()); // fasle
System.out.println(st.nextToken()); // NoSuchElementException(예외발생)
}
}
// result
4
true
true
동해물과
백두산이
마르고
닳도록
false
Exception in thread "main" java.util.NoSuchElementException...