[Java] 문자열 자르기 - StringTokenzer

2020. 12. 17. 23:18프로그래밍 언어/Java

split 함수는 정규표현식을 알면 잘 사용할 수 있습니다.

오늘은 정규표현식을 사용하지 않고 더 빠른 속도로 문자열을 자를 수 있는 StingTokenizer를 소개해드리도록 하겠습니다.

 

속도가 빠르기 때문에 용량이 큰 문자열을 읽어서 자를 때 많이 사용합니다.

그러나 split 처럼 String 배열에 저장해서 원하는 index를 읽을 수 없습니다.

문자열 맨 앞에서 순서대로 자른 것을 읽을 수 있습니다.

 

문자열 사과, 배, 귤, 바나나, 딸기, 수박

과일 이름을 여러 개 가지고 있는 문자열을 생각해보도록 하겠습니다.

쉼표 기준으로 문자열을 자른다고 하면 쉽게 과일 이름을 뽑아낼 수 있습니다.

문자열을 자른 결과를 순서대로 읽으면 아래 표와 같이 읽을 수 있습니다.

사과
바나나
딸기
수박

 

Java API

StringTokenizer는 클래스라서 문자열을 생성자 파라미터로 넘겨서 사용합니다.

생성자는 2개를 제공합니다.

구분자가 공백일 경우에는 첫번째 API를 사용하시면 됩니다.

String StringTokenizer(String str)

/*
파라미터:
  str - 자를 문자열
  구분자(delimiter)가 없으면 " "(공백)을 기본 구분자로 사용한다.
*/

String StringTokenizer(String str, String delim)

/*
파라미터:
  str - 자를 문자열
  delim - 문자열을 자를 구분자(delimiter)
*/

 

구분자(delimiter) 기준으로 잘라진 문자열 1개를 Token(토큰)이라고 합니다.

Token을 하나씩 순서대로 읽는 메서드와 Token이 더 남아있는지 확인하는 API를 제공합니다.

 

boolean hasMoreToken()

/*
Return:
  Token이 남아있으면 true, 그렇지 않으면 false를 리턴한다.
*/

String nextToken()

/*
Return:
  다음 Token 문자열을 리턴한다.
*/

 

사용법

먼저 문자열 및 구분자(delimiter)로 StringTokenizer 클래스를 생성합니다.

hasMoreToken 함수로 남아있는 Token이 있는지 확인하여 true이면

nextToken 함수로 다음 Token을 가져옵니다.

String str = "사과 배 귤 바나나 딸기 수박";
StringTokenizer st = new StringTokenizer(str);		// 대상 문자열로 생성
while (st.hasMoreElements())				// 남아있는 토큰 확인
{
	System.out.println(st.nextToken());		// 다음 토큰을 가져와서 출력
}

// 출력
사과
배
귤
바나나
딸기
수박

 

자주 사용하는 활용예제

IP 주소를 .(dot) 기준으로 나누는 예제입니다.

split 함수와 다르게 .(dot)를 그대로 구분자(delimiter)로 설정하시면 됩니다.따라서, split처럼 정규표현식이 필요하지 않은 경우 간단하게 사용할 수 있습니다.

String ipAddress = "110.20.0.255";
StringTokenizer st = new StringTokenizer(ipAddress, ".");
while (st.hasMoreElements())
{
	System.out.println(st.nextToken());
}

// 출력
110
20
0
255

 

split 함수와 비교

StringTokenizer는 정규표현식이 필요하지 않은 구분자(delimiter)를 설정할 때 사용하기 용이하다는 장점이 있습니다.

속도가 빨라서 파일을 읽어서 문자열을 자를 때 사용할 수 있습니다.

 

예를 들면 특정 파일을 읽어서 ,(쉼표) 단위로 구분하여 문자열을 자를 때 split 함수를 쓰는 것보다 StringTokenizer 클래스를 사용하는 것이 훨씬 빠릅니다.

대신 로직 처리할 때 순서대로만 처리해야 하고 뒤로 돌아갈 필요가 없는 경우에 사용할 수 있습니다.

 

관련글 :

2020/12/12 - [Java] - [Java] 문자열 자르기 - substring

 

[Java] 문자열 자르기 - substring

Java 기본으로 제공하는 String 클래스에 편리한 기능들이 많이 들어있습니다. 그 중 하나가 문자열을 자를 때 사용하는 substring입니다. (split, StringTokenizer, 정규표현식을 활용한 여러 가지 방법이

smartpro.tistory.com

2020/12/16 - [Java] - [Java] 문자열 자르기 - split

 

[Java] 문자열 자르기 - split

지난 시간에는 index를 지정하여 문자열을 자르는 substring을 알아보았습니다. 이번 시간에는 특정 문자를 지정하여 여러 개의 문자열로 자르는 split을 알아보도록 하겠습니다. 문자열 사과, 배, 귤

smartpro.tistory.com

 

2020/12/21 - [Java] - [Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기

 

[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기

여러 구분자로 문자열 자르기 문자열을 분할할 때 구분자(delimiter)를 여러 개 사용하는 경우가 있습니다. split 함수와 StringTokenizer 클래스를 사용하여 가능합니다. 먼저 split 함수부터 알아보도록

smartpro.tistory.com

 

반응형