본문 바로가기

TIL

<자바 Java> 기본 API - StringTokenizer 클래스

- StringTokenizer 클래스

문자열이 특정한 기호(구분자)로 연결되어 있는 경우, 해당 기호를 기준으로 문자열을 분리하여 가져올 수 있도록 하는 기능을 가지고 있는 클래스다. 이와 비교되는 것이 String 클래스의 split() 메서드다. 코드로 보자.

 

 

1) String 클래스의 split() 메서드

String[] result = "문자열".split("구분기호");
public class StringSplitExample {
	public static void main(String[] args){
    	String text = "자바&스플릿,테스트,하기-성공";
        
        String[] names = text.split("&|,|-"); // | 기호로 구분기호들을 구분해준다.
        
        for(String name : names) {
        	System.out.println(name);
        }
    }
}

결과는 다음과 같이 출력된다.

 

자바

스플릿

테스트

하기

성공

 

 

2) StringTokenizer 클래스

StringTokenizer 클래스는 다음과 같이 사용된다.

StringTokenizer st = new StringTokenizer("문자열", "구분기호");
String text = "자바/스프링토크나이저/테스트";
StringTokenizer st = new StringTokenizer(text, "/");

 

결과는 다음과 같이 출력된다.

 

자바

스프링토크나이저

테스트

 

 

StringTokenizer 클래스에는 이 외에도 문자열을 분리해올 때 사용할 수 있는 메서드들이 존재한다.

1) countTokens() - int타입 / 남아있는 토큰의 수를 구해온다.

2) hasMoreTokens() - boolean타입 / 토큰이 남아있는지의 여부를 판별한다.

3) nextToken() - String타입 / 토큰을 하나씩 꺼내온다.

*토큰 - 구분기호로 구분된 각 문자열을 뜻함

 

위 메소드 사용 시 주의할 점은, nextToken()은 토큰을 하나씩 꺼내온 뒤 남아있는 토큰이 없으면 예외를 발생시키기 때문에 반드시 hasMoreToken()를 통해 토큰이 남아있는지를 먼저 판별한 후 그 다음에 사용해야 한다는 것이다.

 

위 메소드들을 이용해 토큰을 구분기호로부터 분리하여 가져오는 것은 다음의 두 가지 방법으로 가능하다.

public class StringTokenizerExample{
	public static void main(String[] args){
    	String text = "자바/스프링토크나이저/테스트";
        
 		//방법 1 - countTokens()로 전체 토큰 수를 얻어 반복문으로 하나씩 얻어온다.
        StringTokenizer st = new StringTokenizer(text, "/");
        int countTokens = st.countTokens();
        for(int i=0;i<countTokens;i++) {
        	String token= = st.nextToken(); //반복문이 토큰의 수 만큼만 작업하기 때문에 hasMoreTokens()를 쓰지 않아도 된다.
            System.out.println(token);
        }
        
        
        //방법 2 - 토큰이 있는지 확인하고 하나씩 꺼내온다.
        st = new StringTokenizer(text, "/");
        while(st.hasMoreTokens()) {
        	String token = st.nextToken();
            System.out.println(token);
        }
    }
}

결과는 다음과 같이 출력된다.

 

자바

스프링토크나이저

테스트

 

 

 

 

 

참고 : 도서 <이것이 자바다>