본문 바로가기
JAVA/Java Study

[Java] StringTokenizer - split()과의 차이점

by ♡˖GYURI˖♡ 2024. 1. 28.

StringTokenizer

  • 문자열을 구분자를 이용하여 분리할 때 사용 가능

말 그대로 String(문자열)을 Tokenizer(조각화)한다!

 

 

생성자

StringTokenizer st = new StringTokenizer("abc def");    // 띄어쓰기(공백) 기준
StringTokenizer st2 = new StringTokenizer("abc,def", ",");  // 구분자 기준
StringTokenizer st3 = new StringTokenizer("abc,def", ",", true); // (or false)

 

1. 문자열만 이용

  • 띄어쓰기를 기준으로 나눠지게 된다.
  • ex) abc와 def

2. 문자열, 구분자

  • 구분자를 기준으로 나누어진다.
  • ex) abc와 def

3. 문자열, 구분자, true/false

  • true면 구분자도 토큰에 포함, false면 구분자는 구분하는데에만 사용되고 토근에는 포함X
  • ex) true → abc와 ,와 def
  • ex) false → abc와 def
  • 디폴트는 false

 

 

띄어쓰기 기준으로 분리

StringTokenizer st = new StringTokenizer("abc def");

while (st.hasMoreTokens()) {
	System.out.println(st.nextToken());
}

 

 

구분자를 기준으로 분리

StringTokenizer st2 = new StringTokenizer("abc,def", ",");

while (st2.hasMoreTokens()) {
	System.out.println(st2.nextToken());
}

StringTokenizer st3 = new StringTokenizer("abc,def", ",", true); // (or false)

while (st3.hasMoreTokens()) {
    System.out.println(st3.nextToken());
}

 

 

구분자가 여러 개라면?

여러 개의 문자를 구분자로 토큰을 만들 수 있다.

String str = "blog > Gyuri! https://newbie-in-softengineering.tistory.com/";
StringTokenizer st4 = new StringTokenizer(str, ">!");

while (st4.hasMoreTokens()) {
	System.out.println(st4.nextToken());
}

 

 

StringTokenizer 메서드

리턴값 메서드명 역할
boolean hasMoreTokens() 남아있는 토큰이 있으면 true, 없으면 false 리턴
String nextToken() 객체에서 다음 토큰을 반환
String nextToken(String delim) delim 기준으로 다음 토큰을 반환
boolean hasMoreElemtnes() hasMoreTokens와 비슷
자주 쓰이지 않음
Object nextElement() nextToken 메서드와 비슷하지만, 문자열이 아닌 객체를 리턴
int countTokens() 총 토큰의 개수를 리턴

 

 

StringTokenizer와 split의 차이

둘 다 문자열을 파싱하는데 사용할 수 있다.

 

StringTokenizer는 java.util에 포함되어 있는 클래스이지만, split은 String 클래스에 속해있는 메서드라는 점에서 차이가 있

다.

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

StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만, split은 빈 문자열도 토큰으로 인식한다는 차이가 있다.

그리고 StringTokenizer는 결과값이 문자열이라면, split은 결과값이 문자열 배열이다. 따라서 StringTokenizer를 이용할 경우 전체 토큰을 보고싶다면 반복문을 이용해 하나하나 뽑아야 한다.

 

 

 

 

 

참고

 

[Java] StringTokenizer 문자열 분리하기 (split과 차이는 뭘까?)

StringTokenizer 클래스란? StringTokenizer 클래스는 문자열을 구분자를 이용하여 분리할 때 사용할 수 있습니다. 만일 BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들일 수 밖

dev-coco.tistory.com