자바

11.8. 2 StringTokenizer 클래스

 

문자열이 한 종류의 구분자로 연결되어 있을 경우, StringTokenizer 클래스를 사용하면 손쉽게 문자열(토큰: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.utilNoSuchElementException 예외를 발생시킨다. 그래서 nextToken() 메소드를 사용하기 전에 hasMoreTokens() 메소드로 꺼내올 토큰이 있는지 조사한 후 nextToken() 메소드를 호출하는 것이 좋은 코딩 방법이다. 다음은 두 가지 방법으로 토큰을 추출하는 방법을 보여준다.

 


public class StringTokenizerExample {
    
    public static void main(String[] args) {
        
        String  text ="홍길동/이수홍/박연수";
        
        //how1:전체 토큰 수를 얻어 for 문으로 루핑
        StringTokenizer st =new StringTokenizer(text, "/");
        int countTokens =st.countTokens();
        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);
        }
        
    }
    
}

 

 

홍길동
이수홍
박연수

홍길동
이수홍
박연수
 

 

 

 

about author

PHRASE

Level 60  머나먼나라

다른 나라의 멋진 걸음걸이를 흉내내다 보니 다 배우지도 못하고 자기의 걸음걸이법도 잊어버렸다. 다른 좋은 점에 물들어 자기의 좋은 점을 잊어버렸다는 비유. 연(燕) 나라 서울 수릉(壽陵)에 사는 여자, 즉 스무 살 미만의 젊은이가 조(趙) 나라의 서울 한단(邯鄲)에 갔다. 그 당시 한단은 천하의 문화의 중심지였고 그 곳 사람들의 걸음걸이가 가장 멋있다고 생

댓글 ( 4)

댓글 남기기

작성

자바 목록    more