본문 바로가기

백준/알아두면 유용한 것

자바 StringTokenizer 사용법 (기초)

반응형

 

StringTokenizer는 문자열을 토큰화해주는 자바의 클래스입니다.

자바를 쓰신다면 수많이 접하는 것 중 하나이기 때문에 잘 알아두시면 좋습니다.   

 

1. 문자열 나누기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class practice {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        
        String s = st.nextToken();
        
        System.out.println(s);
    }
}

입력 : park kim lee

출력 : park

 

여기서 알아두셔야 할 점은 st 변수에는 park, kim, lee 3개가 모두 담겨있습니다. 하지만 String s 변수에서 st의 토큰 하나만 담아서 park이 출력이 되는 것입니다. 그렇다면 3가지를 모두 출력하려면 어떻게 해야 할까요?

2. hasMoreTokens()

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        while (st.hasMoreTokens()) {
            String s = st.nextToken();

            System.out.println(s);
        }

        }
    }

입력 : park kim lee

출력 : park kim lee

st.hasMoreTokens()는 st가 토큰을 가지고 있는지 확인합니다. 가지고 있다면 True, 아니면 False를 반환합니다.  그래서 st에 토큰이 있는 동안에는 True로 반복문이 수행되므로 토큰들을 모두 출력할 수 있게 됩니다. 

StringTokenizer는 String 배열의 split처럼 띄어쓰기를 기준으로 문자열을 토큰화 할 수도 있고 쉼표를 기준으로 토큰화 할 수도 있습니다. 

 

3. StringTokenizer의 delimeter 

 

StringTokenizer는 문자열을 나누는 역할을 합니다. 하지만 코딩에는 수많은 경우가 존재하는데 공백이 아닌 다른 문자를 기준으로 나눠야 하면 어떡할까요? 이럴 대는 delimeter 부분에 나누는 기준을 적어주면 됩니다. 예를 들어 ','를 기준으로 문자를 나눈다면 delim 부분에 ,를 적어주면 됩니다.  (아무것도 적지 않는다면 공백을 기준으로 나누게 됩니다.) 

     StringTokenizer st = new StringTokenizer(br.readLine());
     StringTokenizer st2 = new StringTokenizer(br.readLine(), ",");

 

 

 

    

 

 

 

 

 

 

반응형

'백준 > 알아두면 유용한 것' 카테고리의 다른 글

JAVA substring (간단히)  (0) 2022.08.29
소수를 구하는 법  (0) 2022.08.19
최대공약수 최소공배수  (0) 2022.08.19