StringTokenizer 클래스
java.util 패키지에 존재하는 StringTokenizer 클래스는 문자열을 특정 구분 기호를 기준으로 분할하며, 분할된 문자열을 토큰(Token)이라고 말합니다.
StringTokenizer 생성자
StringTokenizer 클래스는 세 가지 형태의 생성자 함수를 가지고 있습니다.
생성자 1. StringTokenizer(String str)
첫 번째 생성자 함수는 매개변수로 전달받은 문자열에 대해 문자열 토큰을 생성합니다. 문자열을 구분하는 기호는 탭(\t), 줄 바꿈(\n), 캐리지 리턴(\r), 폼 피드(\f)입니다.
public StringTokenizer(String str);
다음 예제는 StringTokenizer 클래스의 첫 번째 생성자 함수에 문자열을 전달하여 생성된 문자열 토큰을 출력합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Hello Java !\nnew World");
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Hello
Java
!
new
World
생성자 2. StringTokenizer(String str, String delim)
두 번째 생성자 함수는 구분 문자열을 전달할 수 있습니다.
public StringTokenizer(String str, String delim);
다음 예제는 StringTokenizer 클래스의 두 번째 생성자 함수에 구분 문자열 콤마(",")를 전달하여 생성된 문자열 토큰을 출력합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Hello,Java!,new,World", ",");
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Hello
Java!
new
World
다음 예제는 StringTokenizer 클래스의 두 번째 생성자 함수에 구분 문자열 "Hello"를 전달합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Hello Java! Hello React!, Hello C#!", "Hello");
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Java!
R
act!,
C#!
실행 결과를 보면, 예상했던 결과와 다른 것을 확인할 수 있습니다. 구분 문자열 "Hello"를 전달하면, "Hello"를 기준으로 문자열을 분할하는 것이 아니라 "H", "e", "l", "o"를 기준으로 분할합니다.
위 예제가 어렵다면, 다음 예제를 봅시다. 다음 예제는 StringTokenizer 클래스의 두 번째 생성자 함수에 구분 문자열 "_a"를 전달합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Apple_Banana_Watermelon!", "_a");
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Apple
B
n
n
W
termelon!
구분 문자열 "_a"를 두 번째 매개변수에 전달했으므로 문자열 "_", "a"를 기준으로 문자열을 분할합니다.
생성자 3. StringTokenizer(String str, String delim, boolean returnDelims)
세 번째 생성자 함수를 사용하여 구분자를 토큰에 포함할 것인지 포함하지 않을 것인지 설정할 수 있습니다.
public StringTokenizer(String str, String delim, boolean returnDelims);
다음 예제는 구분 문자열 "_"를 전달하고 구분자를 토큰에 포함하지 않으므로 세 번째 매개변수에 false를 전달합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Apple_Banana_Watermelon!", "_", false);
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Apple
Banana
Watermelon!
다음 예제는 구분 문자열 "_"를 전달하고 구분자를 토큰에 포함할 것이므로 세 번째 매개변수에 true를 전달합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer =
new StringTokenizer("Apple_Banana_Watermelon!", "_", true);
while(stringTokenizer.hasMoreTokens()) {
System.out.println(stringTokenizer.nextToken());
}
}
[실행 결과]
Apple
_
Banana
_
Watermelon!
메서드
StringTokenizer 클래스는 다음 여섯 개의 메서드를 가지고 있습니다.
boolean hasMoreTokens()
- 토큰이 존재하면 true, 그렇지 않으면 false를 반환합니다.
boolean hasMoreElements()
- 내부적으로 hasMoreTokens() 메서드를 호출하므로 동작 방식, 반환 결과는 hasMoreTokens() 메서드와 동일합니다.
int countTokens()
- 토큰의 개수를 반환합니다.
String nextToken()
- 사용 가능한 다음 토큰을 문자열로 반환합니다.
String nextToken(String delim)
- 매개변수로 전달받은 구분 기호를 기준으로 분할된 다음 토큰을 문자열로 반환합니다.
Object nextElement()
- 내부적으로 nextToken() 메서드를 호출하지만, 반환 타입이 Object라는 차이점이 있습니다.
토큰의 총 개수 및 존재 여부
다음 예제는 토큰의 총 개수와 존재 여부를 출력합니다.
public static void main(String args[]) {
StringTokenizer stringTokenizer1 =
new StringTokenizer("Apple_Banana_Watermelon!", "_");
System.out.println("stringTokenizer1 토큰의 총 개수: " + stringTokenizer1.countTokens());
System.out.println("stringTokenizer1 토큰 존재 여부: " + stringTokenizer1.hasMoreElements());
System.out.println("stringTokenizer1 토큰 존재 여부: " + stringTokenizer1.hasMoreTokens() + "\n");
StringTokenizer stringTokenizer2 =
new StringTokenizer("", ",");
System.out.println("stringTokenizer2 토큰의 총 개수: " + stringTokenizer2.countTokens());
System.out.println("stringTokenizer2 토큰 존재 여부: " + stringTokenizer2.hasMoreElements());
System.out.println("stringTokenizer2 토큰 존재 여부: " + stringTokenizer2.hasMoreTokens());
}
[실행 결과]
stringTokenizer1 토큰의 총 개수: 3
stringTokenizer1 토큰 존재 여부: true
stringTokenizer1 토큰 존재 여부: true
stringTokenizer2 토큰의 총 개수: 0
stringTokenizer2 토큰 존재 여부: false
stringTokenizer2 토큰 존재 여부: false
'Java > 문자열' 카테고리의 다른 글
[Java]StringBuffer 클래스 사용 방법 (0) | 2022.09.10 |
---|---|
[Java]StringBuilder 클래스 사용 방법 (0) | 2022.09.08 |
[Java]실수를 문자열로 변환(Double to String) (0) | 2022.09.08 |
[Java]문자열을 실수로 변환(String to Double) (0) | 2022.09.07 |
[Java]문자열이 숫자인지 체크하는 방법 (0) | 2022.09.06 |
댓글