본문 바로가기

Programming/JAVA

StringTokenizer

  • 기본적인 사용 방법#

  1. StringTokenizer stok = new StringTokenizer("사과 배 복숭아");

  2. str1 = stok.nextToken();      //"사과"리턴
  3. str2 = stok.nextToken();      //"배"리턴
  4. str3 = stok.nextToken();      //"복숭아"리턴


StringTokenizer 클래스는 java.util 패키지에 속해있다.

따라서 소스코드에 다음과 같은 import 선언문을 써주어야 한다

  1. import java.util.StringTokenizer; 또는 import java.util.*;


토큰을 모두 추출하고 난 다음에 다시 호출하면 NoSuchElementException을 발생한다. 이를 막기 위해서는 nextToken 메소드를 호출하기 전에 먼저 추출할 토큰이 남아 있는지 확인해야 한다.

이는 StringTokenizer 클래스의 또 다른 메소드인 hasMoreTokens를 이용한다.

  1. while (stok.hasMoreTokens()) {         //토큰이 있는 동안만 while문 안에서 토큰을 추출하여 처리한다.
  2. str = stok.nextToken();
  3. System.out.println(str);
  4. }


위 기본적인 사용법을 종합해 보면 다음과 같다.

  1. import java.util.*;
  2. class StringTokenizerExample {
  3. public static void main(String []args) {
  4. StringTokenizer stok = new StringTokenizer("사과 배 복숭아");
  5. while (stok.hasMoreTokens()) {
  6. String str = stok.nextToken();
  7. System.out.println(str);
  8. }
  9. }
  10. }


  • 주어진 구획문자를 기준으로 토큰을 추출하는 방법#

  1. stok = new StringTokenizer("사과,배,복숭아",",");      //콤마(,)를 두번째 인자로 넘겨준다.


한가지 구획문자 뿐만 아니라 두개 이상의 구획문자로도 토큰을 추출할 수 있다.

다음과 같은 예도 가능하다.

  1. stok = new StringTokenizer("사과,배|복숭아",",|");      //콤마(,)와 수직선(|)를 인자로 넘겨준다.


  • 구획문자까지 토큰으로 만드는 방법#

  1. stok = new StringTokenizer("사과=10|초콜렛=3|샴페인=1","=|",true);      //세번째 인자로 true를 넘겨준다.


다음은 이런 방법으로 토큰을 사용하는 예제코드다.

  1. import java.util.*;
  2. class StringTokenizerExample {
  3. public static void main(String []args) {
  4. StringTokenizer stok = new StringTokenizer("사과=10|초콜렛=3|샴페인=1","=|",true);
  5. while (stok.hasMoreTokens()) {
  6. String token = stok.nextToken();
  7. if (token.equals("="))
  8. System.out.print("\t");
  9. else if (token.equals("|"))
  10. System.out.print("\n");
  11. else
  12. System.out.print(token);
  13. }
  14. }
  15. }


  • 숫자를 입력받고 정수부와 허수부로 나누는 예제코드#

  1. import java.io.*;
    import java.util.*;

    public class StringTokenizerExampleEx {

        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            String db = null;
            int i = 0;        //출력용 카운터 변수
            int aa = 0;
            int bb = 0;
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("숫자입력 : ");        //숫자 입력
            db = br.readLine();
            StringTokenizer stok = new StringTokenizer(db,".");        //콤마로 토큰 분리
            while (stok.hasMoreTokens()) {
                String str = stok.nextToken();
                if (i == 0) {        //임시로 한거니깐 맞게 응용
                    System.out.println("정수부 : "+str);
                    aa = Integer.parseInt(str);        //integer 로 형변환
                    i++;
                }
                else
                    System.out.println("허수부 : "+str);
                    bb = Integer.parseInt(str);        //integer 로 형변환
            }//while 문 끝
          
            System.out.println("정수부 : " + aa + " 허수부 : " + bb);    //나눠서 출력
            System.out.println("덧셈 : " + aa+bb);            //두 토큰 덧셈
        }

    }

'Programming > JAVA' 카테고리의 다른 글

[펌]날짜로 부터 경과된 날짜 구하기...  (0) 2008.11.06
[펌]향상된 for 순환문  (0) 2008.11.06
[펌]ANT  (0) 2008.10.16
[펌]Log4J  (0) 2008.10.16
[펌]JSTL(JSP Tag Library) 개요  (0) 2008.10.16