본문 바로가기
Java/Java

[Java]StringTokenizer 문자열 분리하기

by 전재경 2022. 11. 11.

StringTokenizer란 ?

 

StringTokenizer 클래스는 문자열을 구분자를 이용해 분리할 때 사용

 

BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들일 수 밖에 없다.

 

꼭 BufferedReader 클래스만이 아니더라도, 스페이스 기준으로 혹은 컴마로 혹은 공백을 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용합니다.

 

간단하게 

String : 문자열을

Tokenizer : 토큰화한다.

이렇게 해석할 수 있습니다. 

 

즉, 토큰은 분리된 문자열 조각으로, StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰으로 분리하는 클래스

 

 

StringTokenizer import

import java.util.StringTokenizer;

 

StringTokenizer 생성자

 

StringTokenizer를 생성하는 방식에는 3가지가 있다.

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

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

StringTokenizer st = new StringTokenizer(문자열,구분자,true/false)
//구분자를 기준으로 문자열을 분리할 때 구분자도 토큰으로 넣을지(true),
//구분자는 분리된 문자열 토큰에 포함 안시킬지(false)(디폴트는 false)

 

 

문자열을 띄어쓰기 기준 분리

public class Main {
    public static void main(String[] args) {

        String str = "저녁에 맥주를 마실까 말까";
        StringTokenizer st = new  StringTokenizer(str);

        System.out.println(st.nextToken());
        System.out.println(st.nextToken());
        System.out.println(st.nextToken());
        System.out.println(st.nextToken());
        
        //반복문으로 해도 됩니다
    }

}

 


문자열을 구분자 기준 분리

public class Main {
    public static void main(String[] args) {

        String str = "저녁에!맥주를!마실까!말까";
        StringTokenizer st = new  StringTokenizer(str, "!", true);

        while (st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }
    }

}

 

구분자를 하나의 문자가 아닌 여러 문자로 구분

 

" 메뉴추천 - 같이먹을 안주 : 치킨 " 이라는 문자열을 

만약,

1. 메뉴추천

2. 같이먹을 안주

3. 치킨

 

이렇게 세 개의 토큰으로 구분하고 싶다면, 구분자는 ' - ' 와 ' : ' 두개여야 할겁니다.

public class Main {
    public static void main(String[] args) {

        String str = "메뉴추천-같이먹을 안주:치킨";
        StringTokenizer st = new  StringTokenizer(str, "-:");

        while (st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }
    }

}

 

StringTokenizer와 split의 차이

 

둘 다 문자열 파싱하는데 사용할 수 있습니다.

StringTokenizer는 java.util에 포함되어 있는 클래스, split는 String 클래스에 속해있는 메소드입니다.

 

StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split는 정규표현식으로 구분합니다.

 

StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있습니다.

 

StringTokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다.

따라서 StringTokenizer를 이용할 경우 전체 토큰을 보고싶다면 반복문을 이용해 하나하나 뽑을 수 밖에 없습니다.

 

 

'Java > Java' 카테고리의 다른 글

[Java] Stream이란 ?  (0) 2022.11.20
항해99 - Java 스터디 과제  (0) 2022.11.18
[Java]열거 타입  (0) 2022.11.11
[Java]향상된 for문  (0) 2022.11.11
[Java]배열(Array) 선언 및 초기화,복사  (0) 2022.11.11

댓글