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
2020/12/16 - [Java] - [Java] 문자열 자르기 - split
2020/12/21 - [Java] - [Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 문자열 자르기 - char형 구분자 (0) | 2020.12.30 |
---|---|
[Java] 문자열 자르기 - 정규표현식(split) (0) | 2020.12.28 |
[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기 (0) | 2020.12.21 |
[Java] 문자열 자르기 - split (0) | 2020.12.16 |
[Java] 문자열 자르기 - substring (0) | 2020.12.12 |