StringTokenizer 개념
StringTokenizer 클래스를 사용해서 응용 프로그램에서 문자열을 토큰 단위로 구분해서 만들어주는 클래스다. StringTokenizer를 이용하면 StreamTokenizer 보다 훨씬 간단하게 토큰 값을 구할 수 있다. StringTokenizer 클래스에서 메소드는 식별자, 숫자, 및 인용문자열을 구분하지 않는다. 심지어 주석을 인식해서 건너뛰지도 않는다.
토큰을 구분하는 문자열은 구분기호 집합은 생성할 때 토큰별로 따로 지정이 가능하다. StringTokenizer 인스턴스 생성시 returnDelims를 통해 두가지 방법으로 생성이 가능하다. returnDelims가 true인 경우 구분 기호 문자 자체를 토큰으로 간주하여 토큰이 하나의 구분기호 문자거나 구분기호가 아닌 연속 문자의 최대 시퀀스로 생성된다. returnDelims가 false인 경우에는 구분기호 문자가 토큰을 구분하는 역할을 하게 된다. 구분기호를 제외한 연속 문자의 최대 시퀀스로 생성된다.
StringTokenizer()를 통해서 문자열을 파싱하게 되면 일반적인 split() 메소드를 사용하는 것 보다 훨씬 간편하게 파싱이 가능하다. split() 메소드를 쓰면 for문을 순회하는 로직이 추가되어야 하고, 불필요한 로직이 될 수 있기 때문이다.
StringTokenizer 이용방법(예제)
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
StringTokenizer을 생성하고 문자열을 입력할 때 delimiter와 returnDelims를 이용하는 방법이 총 3가지가 있다. 첫번째 생성방법은 문자열만 입력하는 것이다. default 값은 공백으로 구분된다. 두번째 방법은 직접 구분기호를 입력하여 토큰화 하는 방법이다. 세번째 방법은 문자열, 구분기호, 구분기호 적용방법(returnDelims)를 포함하여 생성하는 방법이다. returnDelims의 초기값은 false다.
returnDelims를 true값으로 StringTokenizer()를 생성하면 다음과 같은 결과가 나온다.
StringTokenizer 코드
import java.util.StringTokenizer;
public class Test {
public static void main(String[] args){
StringTokenizer st = new StringTokenizer("this is a test", " ", true);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
StringTokenizer 출력값
즉, returnDelims를 true로 주면서 공백또한 문자열에 구분기호 까지 문자열로 인식하여 출력하게 된다.
this
is
a
test
StringTokenizer 메소드
StringTokenizer의 추가적인 메소드들은 다음과 같다.
Modifier and TypeMethod and Description
int | countTokens()
예외를 발생하기 전 까지 해당 Tokenizer의 호출 가능 횟수를 카운팅 한다.
|
boolean | hasMoreElements()
hasMoreTokens() 메소드와 동일한 값을 반환한다.
|
boolean | hasMoreTokens()
해당 Tokenizer에서 추가적으로 사용할 수 있는 토큰이 있는지 테스트한다.
|
Object | nextElement()
기본적으로 nextToken() 메소드와 동일하지만 반환값이 String이 아니라 Object라는 차이점을 가진다.
|
String | nextToken()
해당 StringTokenizer에서 다음 토큰을 반환하는 메소드
|
String | nextToken(String delim)
구분기호를 포함한 nextToken() 메소드다.
|
'Programming' 카테고리의 다른 글
Spring Boot 어노테이션 모음집 (0) | 2022.03.01 |
---|---|
JAVA 오버로딩 오버라이딩이란 추상클래스 구현이란 인터페이스란 객체지향 기술 종류 (0) | 2022.02.25 |
SpringBoot란? 시작시 주의사항 알아야 하는 개념들 (0) | 2022.02.23 |
JAVA BufferedReader와 BufferedWriter 사용법 (0) | 2022.02.18 |
JAVA StringBuilder란? StringBuffer란? 차이점 및 사용하는 이유 (0) | 2022.02.17 |
Spring Boot Cause: invalid source release: 11 문제 해결 Fixing (0) | 2022.02.14 |
댓글