Programming/Java
[Java] StringTokenizer 클래스
JunFe
2021. 9. 25. 19:09
반응형
StringTokenizer 클래스
- BufferedReader 클래스의 메서드로 입력을 받으면 라인 단위로 읽게 된다. 여기서 스페이스나 콤마 등으로 문자열을 분리할 경우가 많다. 특정 문자를 기준으로 문자열을 나누고 싶을 때, StringTokenizer를 사용한다.
즉, 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스라고 보면 된다.
StringTokenizer 라이브러리 import
import java.util.StringTokenizer;
StringTokenizer 생성자
StringTokenizer를 생성하는 방식에는 3가지가 있다.
// 띄어쓰기 기준으로 문자열을 나눔.
StringTokenizer st = new StringTokenizer(문자열);
// 구분자를 기준으로 문자열을 나눔.
StringTokenizer st = new StringTokenizer(문자열, 구분자);
// 구분자를 기분으로 문자열을 나눔. 이 때, 구분자도 토큰으로 넣을지 아닐지 구분.(default는 false)
StringTokenizer st = new StringTokenizer(문자열, 구분자, true/false);
1. 띄어쓰기 기준으로 문자열 나누기
import java.util.StringTokenizer;
public class Q9 {
public static void main(String[] args) {
String str = "Welcome to JunFe's blog";
StringTokenizer st = new StringTokenizer(str);
int count = st.countTokens();
for (int i = 0; i < count; i++) {
System.out.println(st.nextToken());
}
}
}
결과 화면
2. 구분자로 구분하기
import java.util.StringTokenizer;
public class Q9 {
public static void main(String[] args) {
String str = "Welcome#to#JunFe's#blog";
StringTokenizer st = new StringTokenizer(str,"#"); // 구분자는 쌍따옴표로 작성.
int count = st.countTokens();
for (int i = 0; i < count; i++) {
System.out.println(st.nextToken());
}
}
}
결과 화면
결과는 1번과 같다.
3. 구분자도 토큰화 하기
import java.util.StringTokenizer;
public class Q9 {
public static void main(String[] args) {
String str = "Welcome#to#JunFe's#blog";
StringTokenizer st = new StringTokenizer(str,"#",true); // 구분자는 쌍따옴표로 작성.
int count = st.countTokens();
for (int i = 0; i < count; i++) {
System.out.println(st.nextToken());
}
}
}
결과 화면
구분자 또한 토큰화되어 출력된 것을 확인할 수 있다.
그렇다면 StringTokenizer와 Split의 차이는 무엇일까
둘 다 문자열을 파싱하는데 사용한다는 공통점이 있다.
차이점
- StringTokenizer는 java.util에 포함된 클래스, split은 String클래스에 속해있는 메소드
- StringTokenizer는 문자나 문자열로 문자열을 구분, split은 정규표현식으로 구분
- StringTokenizer는 빈 문자열을 토큰으로 인식하지 않음, split은 빈 문자열을 토큰으로 인식
- StringTokenizer는 결과값이 문자열이라 전체 토큰을 보고싶으면 반복문을 이용해서 하나씩 뽑아야함, split은 결과값이 문자열 배열.
반응형