[Java] StringTokenizer 과 Split

언교동·2025년 4월 25일

JAVA

목록 보기
2/3
post-thumbnail

BufferedReader 을 사용해 표준 입력을 받을 경우 readLine() 을 사용해서 한 줄씩 받아올 수 있다. 이럴 경우, 구분자를 기준으로 토큰을 나누고 싶을 때 StringTokenizer 과 Split 으로 토큰을 나눌 수 있다. 둘의 차이점은 뭘까?

1. StringTokenizer

  • 구분자 기준으로 문자열을 분리하는 클래스
  • java.util 패키지에 포함되어있음

생성자

1) public StringTokenizer(String str);

  • 전달된 매개변수 str 을 기본 구분자로 분리
  • 기본 delimiter: "\t\n\r"

2) public StringTokenizer(String str, String delim);

  • delim 을 기준으로 문자열 분리

3) public StringTokenizer(String str, String delim, boolean returnDelims);

  • str 을 delim을 기준으로 분리시키는데 returnDelims 의 값이 true 라면 그 구분자까지 token 으로 포함, false 라면 token 으로 포함 x

StringTokenizer 메서드

메서드리턴값리턴값 설명
boolean hasMoreTokens()true 또는 false남아있는 토큰이 있으면 true, 없으면 false
String nextToken()문자열 (String)다음 토큰을 문자열로 반환
String nextToken(String delim)문자열 (String)지정한 구분자 기준으로 분리한 다음 토큰을 문자열로 반환
boolean hasMoreElements()true 또는 false남아있는 엘리먼트(토큰)가 있으면 true, 없으면 false
Object nextElement()객체 (Object)다음 토큰을 Object 타입으로 반환 (실제로는 문자열)
int countTokens()정수 (int)현재 남아있는 토큰의 개수를 정수로 반환

<예제코드>

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
            String str = "Let's#go#2025";
            StringTokenizer token = new StringTokenizer(str, "#", true);
            while (token.hasMoreTokens()) {
                System.out.println(token.nextToken());
            }
    }
}

<출력결과>

Let's
#
go
#
2025

2. split()

  • String 클래스에 포함되어 있는 메서드
  • 문자열을 특정 구분자를 기준으로 나누어 문자열 배열로 반환

사용방법

1) public String[] split(String regex);

- 반환을 String 배열로 받음

- 구분 기호를 문자열이 아닌 정규표현식으로 받음

<예제코드>

    public class Main {
    public static void main(String[] args) {
        String str = "Let's go 2025 with gyodon";
        String[] splitted = str.split(" ");
        for (String s : splitted) {
            System.out.println(s);
        }
    }

<출력결과>

Let's
go
2025
with
gyodon

2) public String[] split(String regex, int limit)

- 문자열을 정규식에 맞춰서 분리
- limit 만큼 문자열을 자름

<예제코드>

String str = "Let's go 2025 with gyodon";
        String[] splitted = str.split(" ", 3);
        for (String s : splitted) {
            System.out.println(s);
        }

<출력결과>

Let's
go
2025 with gyodon

결론

기능, 성능 측면에서의 비교

항목tokenizersplit
기능의미 단위(단어, subword 등)로 텍스트를 분리지정한 구분자 기준으로 문자열을 단순 분리
성능느림 (복잡한 알고리즘 포함, 정밀도는 높음)빠름 (간단한 문자열 처리, 정밀도는 낮음)

참고자료
https://dev-coco.tistory.com/94 [슬기로운 개발생활:티스토리]
https://inpa.tistory.com/entry/JAVA-☕-Split-StringTokenizer-문자열-자르기-비교하기# [Inpa Dev 👨‍💻:티스토리]

0개의 댓글