StringTokenizer
StringTokenizer 클래스는 문자열을 토큰으로 나누는 방법이다.
프로그래밍 언어에서 말하는 토큰이란 언어가 사용하는 기본'단어'를 말한다.
public static void main(String[] agrs) {
위의 문장에서 토큰은 public, static, void, main, (, String, [, ], args, ), { 등이며
이러한 토큰을 제외한 공백문자(스페이스, 탭 문자, 개행 문자 등)는 문자열 내에서 사용되는 경우가 아닌 이상은
모두 아무런 의미를 가지지 않는다.
토큰은 키워드(keyword)나 연산자, 또는 ‘,’, ‘;’, ‘(‘ 등의 구분자(delimiter)와 같은 특수한 형태의 토큰과
명칭(identifier)이나 리터럴(literal)과 같은 일반적인 형태의 토큰으로 나눌 수 있다.
생성자
생성자 | 설명 |
StringTokenizer(String str) | 지정된 문자열에 대한 문자열 토크나이저를 생성합니다. |
StringTokenizer(String str, String delim) | 지정된 문자열에 대한 문자열 토크나이저를 생성합니다. |
StringTokenizer(String str, String delim, boolean returnDelims) | 지정된 문자열에 대한 문자열 토크나이저를 생성합니다. |
메소드
반환형 | 메소드 설명 | |
int | countTokens()
nextToken예외를 생성하기 전에 이 토크나이저의 메서드를 호출할 수 있는 횟수를 계산합니다.
|
returns: 현재 구분 기호 집합을 사용하여 문자열에 남아 있는 토큰 수 반환 |
boolean | hasMoreElements() 이 토크나이저의 문자열에서 사용할 수 있는 토큰이 더 있는지 테스트합니다. |
returns: 토큰이 있는 경우 true, 그렇지 않은 경우 false 반환 |
boolean | hasMoreTokens()
이 토크나이저의 문자열에서 사용할 수 있는 토큰이 더 있는지 테스트합니다. 이 메서드가 true 를 반환하면 인수 없이 nextToken에 대한 토큰을 반환합니다.
|
returns: 현재 위치 뒤에 하나 이상의 토큰이 있는 경우 true, 그렇지 않으면 false 반환 |
Object | nextElement()
nextToken선언된 반환 값이 String이 아닌 것을 제외하고 메서드 와 동일한 값을 반환합니다.
|
returns: 문자열의 다음 토큰 반환 |
String | nextToken()
이 문자열 토크나이저에서 다음 토큰을 반환합니다.
|
returns: 다음 토큰 반환 throws: NoSuchElementException - 이 토크나이저의 문자열에 더 이상 토큰이 없는 경우 |
String | nextToken(String delim)
구분 기호(delim)를 기준으로 문자열을 나누어 이 문자열 토크나이저에서 다음 토큰을 반환합니다.
|
returns: 다음 토큰 반환 throws: NoSuchElementException - 이 토크나이저의 문자열에 더 이상 토큰이 없는 경우. NullPointerException - delim인 경우 null |
StringTokenizer는 토큰화할 문자열 내의 현재 위치를 내부적으로 유지 관리한다.
먼저 문자열을 기본 구분자인 공백으로 토큰화한다.
만약 공백이 아닌 콤마( , ) 구분자를 사용하고 싶다면 StringTokenizer(String str, String delim) 생성자 형식으로
delim에 ","를 넣는다.
직접 소스 코드를 살펴보자.
1. while문의 조건식에 hasMoreTokens() 함수로 현재 StringTokenizer 객체에 남아있는 토큰이 있는지 확인한다.
2. 남아있는 토큰 수를 확인하기 위해 countTokens() 함수로 토큰 수를 받아 변수에 저장한다.
3. 다음 토큰을 가져와 출력하기 위해 nextToken() 함수를 사용한다.
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) { // 토큰이 존재한다면 true 반환
int count = st.countTokens(); // 현재 남아있는 전체 토큰 수 저장
System.out.print("count -> " + count + ", ");
System.out.println(st.nextToken());
}
출력 결과
count -> 4, this
count -> 3, is
count -> 2, a
count -> 1, test
[참고]
https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
'JAVA' 카테고리의 다른 글
[JAVA] BigInteger 클래스 (0) | 2022.03.24 |
---|---|
[JAVA] Comparable과 Comparator (0) | 2022.03.13 |
[JAVA] 원시타입(Primitive Type) / 참조타입(Reference Type) (0) | 2022.03.13 |
[JAVA] StringBuffer, StringBuilder 클래스 (0) | 2022.01.24 |
[JAVA] Scanner와 BufferedReader/BufferedWriter (0) | 2022.01.19 |
댓글