본문 바로가기
안드로이드/JAVA

[JAVA] StringTokenizer 사용법

by 프로나인 2020. 8. 27.

안녕하세요. 프로나인 입니다.

어제 태풍 바비가 강타를 했는데 다들 큰 피해는 없으셨길 바랍니다. 

저는 바람이 엄청 불어서 새벽에 유리창 밀리는 소리에 몇 번이나 깼는지 모르겠네요 하하.... 

 

오늘은 알아두면 좋은 StringTokenizer 을 알아보도록 하겠습니다.


StringTokenizer 란?

우리가 지정한 구분자로 문자열을 나누어주는 클래스입니다.

이렇게 구분자로 문자열을 나눠주면 더 이상 나눌 수 없는 요소들을 Token이라고 합니다.

 

전화번호로 예를 들면, 010-1234-5678 이라는 번호에서

- 는 구분자를 뜻 하는 것이고 010, 1234, 5678 은 Token(토큰) 인 것입니다.

 

딱 읽어보셔도 어느 정도 감이 오 실 텐데요 사용법도 상당히 쉽습니다.

 

생성자(Constructor)

생성자 설명
public StringTokenizer(String str); 기본 delim으로 분리합니다. 이때 기본(default)는 공백 문자 입니다.
공백 문자 = \t , \n , \r , \f
public StringTokenizer(String str, String delim); 지정해준 delim으로 문자열을 분리합니다.
public StringTokenizer(String str, String delim, boolean returnDelims); 지정해준 delim으로 문자열을 분리하는데, 
returnDelims가 'true' = delim 값도 포함
returnDelims가 'false' = delim 값 미포함

 

Method

Method 설명
hasMoreTokens()
public boolean hasMoreTokens()
반환할 Token이 남아있는지 ture/flase 형태로 반환
nextToken()
public String nextToken()
다음 Token 반환.
countToken()
public int countTokens()
현재 남아있는 Token의 개수를 반환.

 

위에서 생성자와 Method들을 살펴보았는데요.

Method에서 저 3가지 이외에도 몇몇 개 있지만 우선 제일 알아야 하는 것 3가지를 설명해보았습니다.

이 외에 다른 method 가 궁금하신 분들은 밑에 링크를 참조하세요!

 

StringTokenizer 사용법

1. 기본 delim 을 사용

(delim = \n , \f , \r , \f ) 공백을 기본으로 인식하여 분리합니다.

public static void main(String[] args) {
        String str = "hello \n my \f name \t is \r pro nine";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str);

        System.out.println("=== String Tokenizer Strart ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println(tokenizer.nextToken());
        }
    }

 

str에 담은 값
String Tokenizer 결과

 


2. delim 을 지정하여 사용 (구분자를 지정)

예시 1.

public static void main(String[] args) {
        String str = "hello + my & name + is * pro % nine";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str,"+");

        System.out.println("=== String Tokenizer Strart ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println(tokenizer.nextToken());
        }
    }

 

str에 담은 값
String Tokenizer 결과

예시 2. (응용 예시)

public static void main(String[] args) {
        String str = " name : pronine " +
                "+ fruit : apple " +
                "+ food : fried eggs " +
                "+ animal : pig ";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str,"+");

        System.out.println("=== String Tokenizer Start ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println(tokenizer.nextToken());
        }
    }

 

str에 담은 값
String Tokenizer 결과

이렇게 delim 의 값을 잘 지정해준다면 아주 깔끔하게 데이터를 가공시켜서 사용할 수 있습니다!!

 


3. delim 을 포함하여 문자열 분리

1. returnDelims = true

public static void main(String[] args) {
        String str = "A-B-C-D+E*F";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str,"-",true);

        System.out.println("=== String Tokenizer Start ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println(tokenizer.nextToken());
        }
    }

 

str에 담은 값
String Tokenizer 결과 값

결과 값을 보시면 delim으로 구분자로 문자열을 분리시켰지만

delim 값도 같이 분리된 것을 확인할 수 있습니다.

 

2. returnDelims = false

public static void main(String[] args) {
        String str = "A-B-C-D+E*F";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str,"-",false);

        System.out.println("=== String Tokenizer Start ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println(tokenizer.nextToken());
        }
    }

 

str에 담은 값
String Tokenizer 결과 값

false의 결과는 delim 값을 포함하지 않는 것을 볼 수 있습니다. 

 


StringTokenizer Method 사용법

public static void main(String[] args) {
        String str = "KOREA+USA+CANADA+RUSSIA+CHINA";
        System.out.println("str에 담긴 값은 : " + str);
        StringTokenizer tokenizer = new StringTokenizer(str,"+",false);

        System.out.println("=== String Tokenizer Start ===");
        while (tokenizer.hasMoreTokens()){
            System.out.println("Token Count = " + tokenizer.countTokens());
            System.out.println(tokenizer.nextToken());
        }
        System.out.println("Token Count = " + tokenizer.countTokens());
    }

 

str에 담은 값
String Tokenizer 결과 값

구분자로 인하여 문자열이 분리된 값들이 존재하는지 hasMoreTokens() 사용하여 boolean 형태로 반환받습니다.

구분자로 인하여 문자열이 분리된 값들을 countTokens() 사용하여 몇 개의 Token들이 남았는지 int 형태로 반환됩니다.

구분자로 인하여 문자열이 분리된 값들을 nextToken() 사용하여 해당 토큰 값을 string형태로 반환됩니다.


나름 쉽게 설명한다고 하였는데 쉽게 설명이 되었는지 모르겠네요 하하! 

무엇보다 직접 해보시고 눈과 손으로 익혀보시는 게 제일 습득하시기엔 쉬운 방법이지 않을까 싶습니다! 

 

위에 말씀드렸던 Method 외에 다른 Method 들은 아래 참조시켜두겠습니다.

혹시 궁금하신 건 언제든 댓글로 남겨주시면 최대한 빠르게 답 해드리겠습니다~!! 

 

그럼 다들 더위 조심하세요!


코드 & 참조

docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

 

StringTokenizer (Java Platform SE 7 )

Constructs a string tokenizer for the specified string. All characters in the delim argument are the delimiters for separating tokens. If the returnDelims flag is true, then the delimiter characters are also returned as tokens. Each delimiter is returned a

docs.oracle.com

 

댓글