개요
StringTokenizer 클래스는 지정된 String을 여러 token으로 분리할 수 있는 기능을 제공한다. 공식문서에 따르면 StringTokenizer 는 legacy class 이므로 되도록이면 String 의 .split() 메서드 혹은 java.util.regex 를 추천한다고 한다.
주요 메서드
메서드 | 내용 |
int countTokens() | 문자열에서 남아있는 토큰 개수 |
boolean hasMoreElements() | 문자열에서 분리할 토큰이 남아있는지 여부 |
boolean hasMoreTokens() | 문자열에서 분리할 토큰이 남아있는지 여부 |
Object nextElement() | 다음 토큰을 문자열로 반환 |
String nextToken() | 다음 토큰을 Object형태로 반환 |
String nextToken(String delim) | delim 을 기준으로 다음 토큰을 반환 *참고 Delimiter : 구분자 |
비슷한 메서드가 여러개 보인다.
- hasMoreElements() 메서드와 hasMoreTokens() 메서드는 동일한 기능을 수행한다
- nextElement() 메서드와 nextToken() 메서드도 동일한 기능을 수행한다. 다만 리턴값의 형태(Object<-> String)만 차이가 있다.
StringTokenizer 를 사용하는 기본 형태는 아래와 같다.
StringTokenizer st = new StringTokenizer("i love you so much");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
위 코드를 실행하면 주어진 문자열에서 공백을 기준으로 각 단어가 분리돼 출력되는 것이 확인된다.
코드
예제1)
public class Test01 {
public static void main(String[] args) {
String str = "i love you so much";
StringTokenizer st = new StringTokenizer(str);
int count = st.countTokens();
System.out.println("토큰 개수 = "+ count);
while (st.hasMoreTokens()){
System.out.print(st.nextToken() + " ");
}
}
}
구분자를 지정하지 않고 String만 매개값으로 넣는 경우 공백을 기준으로 리턴한다.
공백의 크기는 무시된다.
실행 결과
토큰 개수 = 5 i love you so much |
예제2)
public class Test01 {
public static void main(String[] args) {
String str01 = "2021/06/20";
String str02 = "철수:영희:길동:영수";
StringTokenizer st1 = new StringTokenizer(str01, "/");
StringTokenizer st2 = new StringTokenizer(str02, ":");
while(st1.hasMoreTokens()){
System.out.print(st1.nextToken() + " ");
}
System.out.println();
while(st2.hasMoreTokens()){
System.out.print(st2.nextToken() + " ");
}
}
}
구분자를 지정해 구분할 수 있다.
실행결과
2021 06 20 철수 영희 길동 영수 |
예제3)
public class Test01 {
public static void main(String[] args) {
String str01 = "철수::영희:::::: ::길동:영수";
StringTokenizer st1 = new StringTokenizer(str01, ":");
while(st1.hasMoreTokens()){
System.out.print(st1.nextToken() + " ");
}
}
}
구분자 사이에 값이 없는 경우 무시된다. 공백은 엄연히 존재하는 값이므로 처리된다.
실행 결과
철수 영희 길동 영수 |
예제4)
public class Test01 {
public static void main(String[] args) {
String str01 = "철수::영희:::::: ::길동:영수";
StringTokenizer st1 = new StringTokenizer(str01, ":", true);
StringTokenizer st2 = new StringTokenizer(str01, ":", false);
while(st1.hasMoreTokens()){
System.out.print(st1.nextToken() + " ");
}
System.out.println();
while(st2.hasMoreTokens()){
System.out.print(st2.nextToken() + " ");
}
}
}
생성자에 3번째 값은 구분자를 넣을 것인지 여부이다.
실행결과
철수 : : 영희 : : : : : : : : 길동 : 영수 철수 영희 길동 영수 |
'Java > 기본' 카테고리의 다른 글
[Java] 예외처리103 - 예외강제 발생시키기 & 사용자 정의 예외 (0) | 2021.06.20 |
---|---|
[Java] 자바 프로그램의 실행 과정 (0) | 2021.06.20 |
[Java] 유용한 클래스 - Object 클래스 (0) | 2021.06.20 |
[Java] 유용한 클래스 - StringBuffer, StringBuilder클래스 (0) | 2021.06.20 |
[Java] 유용한 클래스 - Wrapper (0) | 2021.06.20 |