StringTokenizer클래스
- java.util 패키지에 있는 클래스로 문자열을 지정한 구분자를 기준으로 자릅니다.
- String클래스의 split() 메소드와 비슷한 부분이 있으나 구분자 지정방법에서 다릅니다.
- 생성자
StringTokenizer(String str) : 문자열을 공백(띄어쓰기)을 기준으로 자름
StringTokenizer(String str, String delim) : str을 delim기준으로 자름(delim은 미포함)
stringTokenizer(String str, String delim, boolean returnDelims) : str을 delim기준으로 자름(delim은 boolean returnDelims이 true이면 포함시킴)
- 주요 메소드
리턴 / 메소드명 및 설명
int / countTokens() : 문자열 조각(token)의 개수
boolean / hasMoreElements() : 다음 토큰이 있는지 여부(루프의 조건으로 사용)
boolean / hasMoreTokens() : hasMoreElements()와 동일
Object / nextElement() : 다음 요소(토큰)을 리턴
String / nextToken() : nextElement()와 동일
.
.
예제
import java.util.*;
class StringToken1{
public static void main(String[] args) {
String str1 = "aa bb cc dd";
StringTokenizer st = new StringTokenizer(str1);
// str1의 문자열을 공백문자를 기준으로 잘라냄
System.out.println("StringTokenizer 사용 - 1");
while (st.hasMoreTokens()){
// st에 토큰이 더 있으면
System.out.print(st.nextToken() + " ");
// 토큰을 가져옴
// aa bb cc dd
}
System.out.println("\n StringTokenizer 사용 - 2");
String str2 = "aa:bb:cc:dd";
StringTokenizer st2 = new StringTokenizer(str2,":");
// str2의 문자열을 콜론(:)을 기준으로 자름
// 기본적으로 구분자는 포함되지 않음
while (st2.hasMoreTokens()){
System.out.print(st2.nextToken() + " ");
} // aa bb cc dd
// StringTokenizer는 루프를 한 번만 돌릴 수 있음
// 다시 사용하기 위해서는 다시 인스턴스를 생성하거나 배열 등에 담아서 사용해야 함
System.out.println("\n String split() 사용");
// String클래스의 split()메소드 사용
// 문자열을 자르는 기준이 되는 구분자가 한 가지 종류일 경우에는 split()이 사용하기 더 편함
String str3 = "aa bb cc dd";
String[] str3Arr = str3.split(" ");
for (int i = 0 ; i < str3Arr.length ; i++)
{
System.out.print(str3Arr[i] + " ");
}
System.out.println("\n String split() 사용 - 역 배열");
for (int i = str3Arr.length - 1 ; i >= 0 ; i--)
{
System.out.print(str3Arr[i] + " ");
}
}
}
.
.
문자열을 자르는 기준이 되는 구분자가 한 가지 종류일 경우에는 split()이 사용하기 더 편할 수 있다.
.
.
StringTokenizer가 필요한 상황을 알아보자
import java.util.*;
class StringToken2{
public static void main(String[] args) {
String str = "1+2-3*4/5";
StringTokenizer st = new StringTokenizer(str, "+-*/");
// 구분자를 여러 글자를 입력하면 각 글자별로 구분자로 동작함
// StringTokenizer에서는 두글자 이상을 묶어서 구분자로 사용할 수 없음
while (st.hasMoreTokens())
{
System.out.print(st.nextToken() + " "); // 1 2 3 4 5
}
System.out.println();
StringTokenizer st2 = new StringTokenizer(str, "+-*/", true);
// 생성자의 세번째 매개변수로 true를 넣으면 구분자도 토큰에 들어감
while (st2.hasMoreTokens())
{
System.out.print(st2.nextToken() + " "); // 1 2 3 4 5
}
System.out.println();
}
}
문자열 자르는 기준이 여러개일경우에는 StringToeknizer를 사용하는 것이 좋다.
.
.
'Java > 본격 Java 기타클래스' 카테고리의 다른 글
[Java] Anonymous의 활용법 (0) | 2020.07.15 |
---|---|
[Java] Anonymous란? (0) | 2020.07.15 |
[Java] 랜덤 클래스 - 로또 번호 만들기 (0) | 2020.07.02 |
[Java] Math 클래스 (0) | 2020.07.02 |
[Java] BigDecimal 클래스 (0) | 2020.07.02 |