■ StringTokenizer
- String을 token단위로 끊어주는 클래스.
- 기본적으로 공백문자('\t', '\n', \r', '\f')를 구획문자로 설정.
- BufferedReader객체를 통해 한줄입력을 받았을 경우, 입력 기준에 따라 문자열을 구분하는 용도로 사용.
■ StringTokenizer 생성자
- StringTokenizer(String str) : 구획문자(delimiter)를 인자로 받지않는 생성자.
- StringTokenizer(String str, String delim)
: 구획문자를 인자로 받는 생성자. 구획문자는 2자리 이상도 설정 가능.
2자 이상의 구획문자를 받은 경우, 구획문자는 길이가 1로 고정이고 여러개의 구획문자로 설정.
- StringTokenizer(String str, String delim, boolean returnDelims)
: returnDelims가 true면 구획문자도 token으로 간주하여 리턴.
■ StringTokenizer 매서드
- (int) countTokens() : 남은 token의 갯수를 리턴.
- (String) nextToken() : 다음 token을 리턴. 이전 token 제거.
- (String) nextToken(String delim) : 구획문자를 delim으로 변경한 후 다음 token을 리턴.
- (boolean) hasMoreTokens() : 리턴할 다음 token이 있으면 true, 없으면 false
■ 예제코드
import java.util.StringTokenizer;
public class StringTokenizerExercise {
public static void main(String[] args) {
String test1 = "this is test String";
String test2 = "this%is%test%%String";
String test3 = "this%is$test#String";
String test4 = "this%%is%$test$String";
StringTokenizer st;
// TEST1 : 공백문자로 구분하여 출력
st = new StringTokenizer(test1);
System.out.println(st.countTokens());
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
System.out.println(st.countTokens());
// TEST2 : '%'을 구획문자로 구분하여 출력
st = new StringTokenizer(test2, "%");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
// TEST3 : '%', '$', '#'을 구획문자로 구분하여 출력 / 구획문자도 리턴
st = new StringTokenizer(test3, "%$#", true);
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
// TEST4 : '%'를 구획문자로 구분하여 출력 하다가 '$'를 구획문자로 변경
st = new StringTokenizer(test4, "%");
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken("$"));
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
■ 예제출력
TEST1 | TEST2 | TEST3 | TEST4 |
4 this is test String 0 |
this is test String |
this % is $ test # String |
this is % test String |