Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Everything has an expiration date

140 - Java 자바의 주요 클래스 : StringTokenizer 클래스, hasMoreTokens(), nextToken(), countTokens() 본문

[Java]

140 - Java 자바의 주요 클래스 : StringTokenizer 클래스, hasMoreTokens(), nextToken(), countTokens()

Jelly-fish 2023. 9. 19. 13:59
/*==============================================
  ■■■ 자바의 주요(중요) 클래스 ■■■
  - 자바에서 기본적으로 제공하는 주요 클래스들
  - StringTokenizer 클래스 (개념만 숙지~!!!)
================================================*/

/*
○ StringTokenizer 클래스는
   
   문자열 파싱(parsing)을 위한 정보를 제공하는 클래스로
   파싱(parsing)하고자 하는 문자열을 인자로 받아 생성하는데,
   여기에서 사용되는 파싱(parsing) 이라는 개념은
   하나의 문자열을 여러 문자열로 나누는 작업을 의미하게 되며,
   이 때 나누는 단위가 되는 문자열을 토큰(token)이라고 한다.

   StringTokenizer 클래스를 사용하기 위해서는
   java.util. 패키지의 StringTokenizer 를 import 해야 한다.

   StringTokenizer 클래스는 호환성을 유지하는 목적으로 
   보관 유지되고 있으며, 문자열을 파싱(parsing)하기 위해서는
   String 클래스의 split() 메소드나, javax.util.regex 패키지를
   사용할 것을 권장하고 있다.



○ 생성자
   
   - 원형
     StringTokenizer(String str)
	 StringTokenizer(String str, String delim)
	 StringTokenizer(String str, String delim, boolean returnDelims)
	 : 주어진 문자열 str 을 단어로 분리하는 객체를 생성하며
	   공백(구분) 문자는 delim 에 포함된 문자로 처리하게 된다.
	   만약 returnDelims 가 true 이면
	   구분 문자도 분리된 데이터로 처리하게 된다.

*/

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;

public class Test140
{
	public static void main(String[] args) throws IOException
	{
		String strTemp;
		String[] strArr;
		int n;


		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.print("파싱할 문자열 입력(컴마 구분) : " );
		strTemp = br.readLine();
		//-- "사과, 딸기, 바나나, 포도"

		// StringTokenizer 클래스 인스턴스 생성
		StringTokenizer st = new StringTokenizer(strTemp, ",");
		//-- strTemp 를 대상 문자열로... ("사과, 딸기, 바나나, 포도");
		//   『","』를 구분자로...

		// 테스트(확인)
		System.out.println(st.countTokens());
		//--==>> 파싱할 문자열 입력(컴마 구분) : 사과,딸기,바나나,포도
		//       4
		//-- StringTokenizer 의 『int countTokens()』 메소드
		//   : 파싱된 문자열의 개수를 반환(리턴)한다.


		strArr = new String[st.countTokens()];
		//                 -------------------
		//                         4

		// → strArr = new String[4];
		
		n = 0;
		
		// 	hasMoreTokens()
		//  이 토크나이저의 문자열에서 사용 가능한 토큰이 더 있는지 테스트합니다.
		//  문자열을 읽어들이는 입장에서... 
		//  hasMoretokens() → 다음 값이 있는지 없는지만 알려주는 메소드. (반환값 boolean)
		//  nextToken() → 실제로 문자열 "사과"를 데려오는 메소드. (반환값 String)
		//
		//  hasMoreTokens() ← 망보기
		//
		// ▼ nextToken() ← 읽어들인 문자열 "사과" 를 반환함
		//===============================
		// "사과" "딸기" "바나나" "포도"
		//===============================
		
		while(st.hasMoreTokens())	// true true true true false
		{
			strArr[n++] = st.nextToken();
			// strArr[0] = st.nextToken();
			//             --------------
			
			// strArr[0] = "사과";
			// strArr[1] = "딸기";
			// strArr[2] = "바나나";
			// strArr[3] = "포도";

		
		}   

		//-- 『hasMoreTokens』
		//    : 사용할 수 있는 토큰이 남아있는 경우 true 를 반환.
		//      더 이상 사용할 토큰이 없는 경우 false 를 반환.
		//      확인에 대한 결과만 반환할 뿐...
		//      실제 내용을 읽어들이지도 않고,
		//      실제 내용을 읽어들이는 헤드를 이동시키지도 않는다.

		//-- 『nextToken()』
		//    : 다음 토큰을 얻어온다.
		//      다음 토큰을 얻어오면헤드를 이동시키게 된다.
		//      구분자를 바꾸었을 경우 다음 호출에도
		//      바뀐 구분자를 이용하여 토큰을 분리한다.
		

		System.out.print("파싱된 토큰(문자열) : ");
		for(String str : strArr)
			System.out.print(str + " ");
		System.out.println();

		//--==>> 파싱된 토큰(문자열) : 사과 딸기 바나나 포도
		//       계속하려면 아무 키나 누르십시오 . . .
		    
		
		




	}
}