StringTokenizer 클래스와 메소드들

2024. 4. 30. 20:22java

1. StringTokenizer란?

StringTokenizer는 String에서 구분자를 통해서 토큰형태로 나눌 때 사용하는 클래스입니다

 

여기서 말하는 구분자는 공백 문자, 탭 문자, 새줄 문자등의 문자를 말합니다.

StringTokenizer를 아래의 코드 처럼 객체화한 후

StringTokenizer st= new StringTokenizer(br.readLine(),",");

 

클래스명에 해야할 설정은

 

StringTokenizer( 자르고 싶은 String , 자르는 기준 문자의 집합 , 자르는 기준을 넣을지 말지)

입니다.

StringTokenizer 사용 법

public class p {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st= new StringTokenizer(br.readLine(),",");
		
		int a = Integer.parseInt(st.nextToken());
		int a2 = Integer.parseInt(st.nextToken());

		System.out.println(a+a2);
	}
}

위에 코드는 입력 받은 숫자를 ,를 기준으로 토큰으로 나뉩니다.

 

그리고,

 

그 숫자를 출력하는 코드입니다.

코드 실행 결과

2. hasMoreToken()란?

 

위 사이트에 글을 인용하면,

문자열에서 현재 위치 뒤에 토큰이 하나 이상 있는 경우에만 true이고, 그렇지 않으면 거짓입니다.

https://docs.oracle.com/en/java/javase/11/docs/api/index.html

 

Overview (Java SE 11 & JDK 11 )

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

즉, 뒤에 토큰이 있으면, true이고, 없으면, false입니다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Scanner;
import java.util.StringTokenizer;

/**==============================*
 * 작성자 : kimga
 * 작성일 : 2024. 4. 14.
 * 파일명 : CodingTest.java
 *프로그램 설명 :
 *==============================**/

/**
 * @author kimga
 *
 */
public class p {
	public static void main(String[] args) throws IOException{
		  String str = "my name is Jung Gwang Jik";
		    StringTokenizer token1 = new StringTokenizer(str);
		    StringTokenizer token2 = new StringTokenizer(str , "a");
		    StringTokenizer token3 = new StringTokenizer(str , "a" , true);
		    StringTokenizer token4 = new StringTokenizer(str , "a" , false);

		    System.out.print("token1 : ");
		    while( token1.hasMoreTokens() ){
		        System.out.print( token1.nextToken() + " / " );
		    }
		    
		    System.out.println();
		    System.out.print("token2 : ");
		    while( token2.hasMoreTokens() ){
		        System.out.print( token2.nextToken() + " / " );
		    }
		    System.out.println();
		    System.out.print("token4 : ");
		    while( token4.hasMoreTokens() ){
		        System.out.print( token4.nextToken() + " / " );
		    } 
		    System.out.println();
		    System.out.print("token3 : ");
		    while( token3.hasMoreTokens() ){
		        System.out.print( token3.nextToken() + " / " );
		    }   
		   
	}
}

 

위의 코드 처럼

token1은 토큰을 나누는 기준 없이 나누고, 

token2는 토큰을 나누는 기준을 a로 정하되, nextoken 때문에 a 대신에  /를 넣겠다는 의미입니다.

token4는 토큰을 나누는 기준을 a를 정하지 않겠다는(false),  nextoken 때문에 a 대신에  /를 넣겠다는 의미입니다.

token3은 토큰을 나누는 기준을 a 정하는 것을 넣어서(true) a 앞뒤로 /를 넣겠다는 의미입니ㅏㄷ.

 

코드 실행 결과

3. hasMoreElements()란?

이 열거형에 더 많은 요소가 포함되어 있는지 테스트합니다.
이 열거형 개체에 제공할 요소가 하나 이상 포함된 경우에만 true이고, 그렇지 않으면 거짓입니다.

 

hasMoreToken()과 hasMoreElements()의 차이는 없습니다.

 

4. countTokens()란

countTokens은 Token 개수를 셀 때 씁니다.

 

'java' 카테고리의 다른 글

substring과 charAt의 차이  (0) 2024.05.07
Arrays 클래스란?  (0) 2024.05.01
hasnext()란? - [java]  (0) 2024.04.24
(JAVA) BufferedWriter  (0) 2024.04.24
StringBuilder란?  (0) 2024.04.20