본문으로 바로가기

[JAVA] StringTokenizer VS String split()

category JAVA/기본 문법 2021. 4. 13. 23:00

Java에서 문자열을 원하는 구분자를 사용하여 분리하는 방법으로 StringTokenizer String의 메소드 split()를 사용한다.

StringStringTokenizer 클래스란?

BufferedReader 클래스의 메서드로 입력을 읽어들이면, 라인 단위로 읽어 들인다.

클래스가 아니더라도 컴마로 구분되는 문자열들을 분리한다던가,

특정 문자에 따라 문자열을 나누고 싶을 때 사용합니다.

 

StringTokenizer 사용법

메소드 설명 리턴타입
nextToken() 다음 토큰을 리턴한다
이전 토큰은 제거
String
hasMoreTokens() 리턴할 다음 토큰이 남아있으면 true
리턴할 다음 토큰이 없으면 false
boolean
countTokens() 남아있는 토큰의 개수를 리턴 int

예시 소스

StringTokenizer st = new StringTokenizer("축구 농구 야구"); // 띄어쓰기 기준으로 문자열 분리

StringTokenizer st = new StringTokenizer("축구:농구:야구", ":"); // 구분자를 기준으로 문자열 분리

// 마지막 매개변수는 구분자 토큰도 문자열 토큰에 포함 시킬지 여부 (디폴트 false)
StringTokenizer st = new StringTokenizer("축구:농구:야구", ":", true);

// 예시
String str = "축구:농구:야구";

StringTokenizer st = new StringTokenizer(str, ":", true);

System.out.println(st.countTokens());	// 갯수 : 3

while(st.hasMoreTokens()) {
	System.out.println(st.nextToken()); // 축구 농구 야구
}

 

split()

- String 클래스의 메소드로 지정한 구분자로 문자열을 나눠 배열에 저장

- 공백 문자열도 포함

- 정규표현식 가능

 

public String[] split (String regex);             // 문자열을 regex(정규식)에 맞춰서 분리함

public String[] split (String regex, int limit); // limit만큼 문자열을 자름.

 

 

StringTokenizer와 String.split()의 차이점

- StringTokenizer는 java.util에 포함되어 있는 클래스, spilt는 String클래스에 속해있는 메소드 입니다.

 

- String.split()은 정규식을 사용하기 때문에 StringTokenizer가 속도 측면에서 성능이 좋다.

 

 - 가변적인 요소가 많은 문자열이나 정확한 분리가 필요할 땐 split() 사용이 유용

   => split()은 다양하게 쪼갤수 있지만 StringTokenizer는 단순한 문자로만 쪼갤 수 있다

 

- StringTokenizer는 문자또는 문자열로 구분한다면, split은 정규표현식으로 구분합니다.

 

- StringTokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다. 

  따라서 StringTokenizer를 이용하려면 반복문을 이용해서 하나하나 뽑을 수 밖에 없다.