StringTokenizer란 ?
StringTokenizer 클래스는 문자열을 구분자를 이용해 분리할 때 사용
BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들일 수 밖에 없다.
꼭 BufferedReader 클래스만이 아니더라도, 스페이스 기준으로 혹은 컴마로 혹은 공백을 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용합니다.
간단하게
String : 문자열을
Tokenizer : 토큰화한다.
이렇게 해석할 수 있습니다.
즉, 토큰은 분리된 문자열 조각으로, StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스
StringTokenizer import
import java.util.StringTokenizer;
StringTokenizer 생성자
StringTokenizer를 생성하는 방식에는 3가지가 있다.
StringTokenizer st = new StringTokenizer(문자열); // 띄어쓰기 기준으로 문자열을 분리
StringTokenizer st = new StringTokenizer(문자열,구분자); // 구분자를 기준으로 문자열을 분리
StringTokenizer st = new StringTokenizer(문자열,구분자,true/false)
//구분자를 기준으로 문자열을 분리할 때 구분자도 토큰으로 넣을지(true),
//구분자는 분리된 문자열 토큰에 포함 안시킬지(false)(디폴트는 false)
문자열을 띄어쓰기 기준 분리
public class Main {
public static void main(String[] args) {
String str = "저녁에 맥주를 마실까 말까";
StringTokenizer st = new StringTokenizer(str);
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
//반복문으로 해도 됩니다
}
}
문자열을 구분자 기준 분리
public class Main {
public static void main(String[] args) {
String str = "저녁에!맥주를!마실까!말까";
StringTokenizer st = new StringTokenizer(str, "!", true);
while (st.hasMoreTokens()){
System.out.println(st.nextToken());
}
}
}
구분자를 하나의 문자가 아닌 여러 문자로 구분
" 메뉴추천 - 같이먹을 안주 : 치킨 " 이라는 문자열을
만약,
1. 메뉴추천
2. 같이먹을 안주
3. 치킨
이렇게 세 개의 토큰으로 구분하고 싶다면, 구분자는 ' - ' 와 ' : ' 두개여야 할겁니다.
public class Main {
public static void main(String[] args) {
String str = "메뉴추천-같이먹을 안주:치킨";
StringTokenizer st = new StringTokenizer(str, "-:");
while (st.hasMoreTokens()){
System.out.println(st.nextToken());
}
}
}
StringTokenizer와 split의 차이
둘 다 문자열 파싱하는데 사용할 수 있습니다.
StringTokenizer는 java.util에 포함되어 있는 클래스, split는 String 클래스에 속해있는 메소드입니다.
StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split는 정규표현식으로 구분합니다.
StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있습니다.
StringTokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다.
따라서 StringTokenizer를 이용할 경우 전체 토큰을 보고싶다면 반복문을 이용해 하나하나 뽑을 수 밖에 없습니다.
'Java > Java' 카테고리의 다른 글
[Java] Stream이란 ? (0) | 2022.11.20 |
---|---|
항해99 - Java 스터디 과제 (0) | 2022.11.18 |
[Java]열거 타입 (0) | 2022.11.11 |
[Java]향상된 for문 (0) | 2022.11.11 |
[Java]배열(Array) 선언 및 초기화,복사 (0) | 2022.11.11 |
댓글