[Java] 문자열 자르기 - StringTokenzer
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