개발 & 데이터베이스/JAVA

자바 StringTokenizer 클래스 정의 및 사용 방법 (split 차이)

K.두부 2022. 9. 20. 22:40
반응형

안녕하세요. 두부입니다.

오늘은 문자열을 분리하는 방법 중 하나인 StringTokenizer 클래스에 대해서 알아보겠습니다. 

 

StringTokenizer 클래스 정의

StringTokenizer 클래스는 주로 BufferedReader 클래스의 메서드로 입력을 받을 때 사용합니다. 특정 문자를 기준으로 문자열을 여러 개의 토큰으로 분리하는 클래스입니다.

 

우선 StringTokenizer 클래스를 사용하려면 라이브러리를 임폴트 해주어야 합니다.

import java.util.StringTokenizer;

 

StringTokenizer 생성
// 띄어쓰기 기준으로 문자열 분리
StringTokenizer st = new StringTokenizer(문자열);

// 구분자 기준으로 문자열 분리
StringTokenizer st = new StringTokenizer(문자열, 구분자); 

// 구분자 기준으로 문자열을 분리할 경우 구분자도 토큰에 넣을지 유무
StringTokenizer st = new StringTokenizer(문자열, 구분자, TRUE/FALSE);

StringTokenizer 클래스를 생성하는 방식은 총 3가지가 있습니다. 첫 번째는 띄어쓰기를 기준으로 문자열을 분리하는 가장 기본적인 방식입니다. 두 번째는 본인이 선택한 구분자를 명시해서 문자열을 나눌 수 있는 방식입니다. 세 번째의 경우는 문자열을 분리할 때 구분자의 포함 여부에 대해서 결정할 수 있습니다.

 

그렇다면 구분자는 어떤 식으로 포함돼서 나누어지는 걸까요? 세 번째의 경우에 대해서 알아보겠습니다.

import java.util.StringTokenizer;

public class solution {
    public static void main(String[] args) {
        String str = "Hellow!World";
        StringTokenizer st = new StringTokenizer(str, "!", true);
		
        System.out.println(st.nextToken()); // Hello
        System.out.println(st.nextToken()); // !
        System.out.println(st.nextToken()); // World
    }
}

문자열 "Hellow!World"를 구분자를 포함해서 분리하는 코드입니다. 예시를 보시면 Hello, !, World로 구분자는 별도로 구분되는 것을 볼 수 있습니다. 

 

구분자를 여러 개 사용할 수 있나요?

구분자를 여러 개 사용하고 싶을 경우도 생기는데요. 위 질문에 대한 대답은 ""입니다.

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
		
        String str = "구분자를*여러개-사용해보자.";
        StringTokenizer st = new StringTokenizer(str, "*-");
		
        System.out.println(st.nextToken()); // 구분자를
        System.out.println(st.nextToken()); // 여러개
        System.out.println(st.nextToken()); // 사용해보자.
    }
}

StringTokenizer 클래스의 두 번째 인자에 구분자를 이어서 여러 개 작성하면 됩니다.

 

StringTokenizer 메서드

StringTokenizer 클래스에는 다양한 메서드를 제공하고 있습니다. 자주 사용하는 것들만 소개하겠습니다.

반환값 메서드명 설명
boolean hasMoreTokens() 남아있는 토큰이 있으면 true, 없으면 false
String nextToken() 객체에서 다음 토큰을 반환
int countTokens() 총 토큰의 개수를 반환

 

StringTokenizer와 split 차이
StringTokenizer split
java.util에 포함된 클래스

문자 또는 문자열로 구분

빈 문자열을 토큰으로 인식하지 않음

결과값이 문자열
String 클래스에 포함된 메서드

정규표현식으로 구분

빈 문자열을 토큰으로 인식함

결과값이 배열

 

반응형