Back-end/이것이 자바다[신용권 한빛미디어]

StringTokenizer 클래스

Ho's log 2021. 10. 24. 17:14

문자열이 특정 구분자(delimiter)로 연결 되어 있을 경우,

구분자를 기준으로 부분 문자열을 분리 하기 위해서는 String의 split() 메소드를 이용하거나,

java.util 패키지의 StringTokenizer 클래스를 이용

split() 은 정규 표현식으로 구분, StringTokenizer는 문자로 구분 

 

Split() 메소드


String 클래스의 split()메소드는 다음과 같이 호출 

정규 표현식을 구분자로 해서 문자열을 분리한 후 , 배열에 저장하고 리턴

 

String[] result = "문자열".split("정규표현식");

 

 

ex) &, 쉼표(,) , -를 제외하고 따로 뽑아내고 싶을 경우

파이프(|) 기호로 연결한 정규 표현식을 매개값으로 제공  

String[] names = text.split("&|,|-")

 

StringTokenizer 클래스


문자열의 한 종류의 구분자로 연결되어 있을 경우 StringTokenNizer 클래스를 사용하면 손쉽게 (토근: token)을 분리

StringTokenizer 객체를 생성할 때

첫번째 매개값으로 전체 문자열을 주고

두번째 매개값으로 구분자를 주면 된다. 

StringTokenizer st = new StringTokenizer("문자열", "구분자")'

 

만약 구분자를 생략하면 공백(Space)이 기본 구분자가 된다.

예를들어 문자열이 "/"로 구분되어 있을경우 

다음과 같이 StringTokenizer 객체를 생성 할 수 있다. 

 

String text = "홍길동/이수홍/박연수";
StringTokenizer st = new StringTokenizer(text, "/");

 

StringTokenizer 객체가 생성되면 부분 문자열을 분리해 낼 수 있는데, 

다음 메소드들을 이용해서 전체 토큰수, 남아 있는 토큰 여부를 확인한 다음, 토큰을 읽으면 된다 

리턴값 메소드 설명
int countTokens() 꺼내지 않고 남아있는 토큰의 수 
boolean hasMoreTokens() 남아있는 토큰이 있는지 여부
String nextToken() 토큰을 하나씩 꺼내옴

 

nextToken() 메소드로 토큰을 하나 꺼내오면 StringTokenizer 객체에는 해당 토큰이 없어진다. 

 

StringTokenizer 객체에서 더 이상 가져올 토큰이 없다면

nextToken() 메소드는 java.util.NoSucjElementException 예외 발생

 

-> nextToken() 메소드를 사용하기 전에

hasMoreToekns()메소드로 꺼내올 토큰이 있는지 조사한 후 nextToken() 메소드를 호출 

public class StringTokenizerExample{
	public static void main(String[] args){
    	String text = "홍길동/이수홍/박연수";
        
        // how 1: 전체 토큰 수를 얻어 for 문으로 루팡
    
    	StringTokenizer st = new StringTokenizer(text,"/");
        
        int countTokens = st.counTokens();
        
        for(int i=0; i<countTokens; i++){
        	String token = st.nextToken();
            System.out.println(token);          
        
        }
        
        System.out.println();
        
        //how2 : 남아있는 토큰을 확인하고 while 문으로 루핑
        st = new StringTokenizer(text, "/");
        
        while(st.hasMoreTokens()){
        
        	String token = st.nextToken();
            System.out.println(token);
        }

}



}

 

 

'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글

정규 표현식과 Pattern 클래스  (0) 2021.10.24
StringBuffer, StringBuilder 클래스  (0) 2021.10.24
String 클래스  (0) 2021.10.23
Class 클래스  (0) 2021.10.23
System 클래스  (0) 2021.10.23