본문 바로가기
자바(Java)/자바(Java) 잡다

자바(Java) StringTokenizer 클래스과 split 메소드

by 인생즐겜러 2023. 2. 20.
728x90
반응형

 

 

 

둘 다 문자열 분리에 사용되는 녀석들이다.

우선 차이점을 보자.

 

StringTokenizer split
java.util에 포함된 클래스 String 클래스에 포함된 메소드
결과값이 여러 개의 Token으로 이루어진 String 결과값이 String 배열
빈 문자열을 Token으로 인식하지 않음 빈 문자열을 Token으로 인식함
문자나 문자열을 구분자로 사용 정규표현식으로 구분

 

 

 

 

 


 

 

 

 

 

StringTokenizer

 

해당 클래스 자체에 대해서 알아보자.

보통은 BufferedReader 클래스와 같이 사용하는데

사실 그게 아니더라도 그냥 String을 분리하고 싶으면 사용한다.

쉽게 말해, String을 Token화 해서 여러 개로 분리한다. 라는 거다.

 

 

 

생성자는 아래와 같다.

 

// 띄어쓰기 기준으로 분리
StringTokenizer st = new StringTokenizer(분리하고 싶은 문자열);
 
// 구분자를 기준으로 문자열분리
StringTokenizer st = new StringTokenizer(분리하고 싶은 문자열, 구분자);
 
// true : 분리할 때 구분자도 토큰으로 추가.
// false : 토큰에 포함 안함.
// 기본값 : false
 StringTokenizer st = new StringTokenizer(문자열 , 구분자 , true/false);

 

 

 

 

 

클래스에 포함된 메소드는 아래와 같다.

 

결과 타입 메소드 설명
boolean hasMoreTokens() 남아있는 토큰이 있으면 true , 더 이상 토큰이 없으면 false 리턴
String nextToken() 객체에서 다음 토큰을 반환
String nextToken(String delim) delim 기준으로 다음 토큰을 반환
boolean hasMoreElements() hasMoreTokens와 동일
Object nextElement() nextToken 메서드와 비슷하지만 반환값이 객체
int countTokens() 총 토큰의 갯수를 리턴

 

 

 

 

 

예시는 아래와 같다.

구분자를 여러개로 써도 된다.

"?:"

위와 같이 설정하면 각각을 구분자로 구분해서 Token에 넣는다.

 

import java.util.StringTokenizer;
 
public class Main {
    public static void main(String[] args)  {
 
        String a = "안녕 디지몬 디질래? 가자 디지털 DMZ세계로";
        StringTokenizer st = new StringTokenizer(a, " ");
        
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
    }
}



결과
안녕
디지몬
디질래?
가자
디지털
DMZ세계로

 

728x90
반응형

댓글