스페이스 기준으로 혹은 컴마로 혹은 공백을 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용합니다.

StringTokenizer 생성자

//1. 띄어쓰기 기준으로 문자열을 분리
StringTokenizer st = new StringTokenzier(문자열);

//2. 구분자를 기준으로 문자열을 분리
StringTokenizer st = new StringTokenizer(문자열, 구분자);

//3. 구분자를 기준으로 문자열을 분리할 때 구분자도 토큰으로 넣냐 마냐
StringTokenizer st = new StringTokenizer(문자열, 구분자, true/false);

문자열을 띄어쓰기 기준으로 분리하기

import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args)  {
         String str = "안녕하세요 슬기로운개발생활 tistory 입니다.";
         StringTokenizer st = new StringTokenizer(str);
                 
				 while (st.hasMoreTokens()) {
				             System.out.println(st.nextToken());
	       }
		}
}

문자열을 구분자 기준으로 분리하기

import java.util.StringTokenizer;

public class Main {
		public static void main(String[] args)  {
				String str = "오늘!날씨는!맑음";
				StringTokenizer st = new StringTokenizer(str, "!");
				
				while (st.hasMoreTokens()) {
						System.out.println(st.nextToken());
				}
				
		}
}

구분자가 하나가 아닌 여러 문자라면?

import java.util.StringTokenizer;

public class Main {
		public static void main(String[] args)  {
				String str = "블로그 >슬기로운 개발생활 :dev-coco.tistory.com";
				StringTokenizer st = new StringTokenizer(str, ">:");
				
				while (st.hasMoreTokens()) {
						System.out.println(st.nextToken());
				}
				
		}
}

StringTokenizer 메서드

리턴값 메서드명 역할
boolean hasMoreTokens() 남아있는 토큰 유무
String nextToken() 다음토큰 반환
String nextToken(String delim) delim 기준으로 다음 토큰 반환
boolean hasMoreElements() hasMoreTokens와 동일
Object nextElement() nextToken과 동일하나 객체 리턴
int countTokens() 토큰 수 리턴

StringTokenizer와 split의 차이

  1. StringTokenizer는 java.util에 포함된 클래스, split은 String 클래스에 속한 메소드
  2. StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split은 정규표현식으로 구분
  3. StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split은 빈 문자열을 토큰으로 인식
  4. StringTokenzier는 결과값이 문자열이라면 split은 결과 값이 문자열 배열