[AVA]19日目(StringTokenizerクラス/hasMoreTokens/nextToken()


8月10日(月)
⑪StringTokenizerクラス
  • StringTokenizerクラスを知っていれば、JavaのCollection Premizerを学ぶときに、その構造が分かりやすいです.
  • StringTokenizerクラス
    文字列グループ(解析)情報を提供するクラス.
    グループ化(解析)する文字列をパラメータとして生成します.
    ここで、「分析」(Parsing)とは、1つの文字列を複数の文字列とすることを意味する.
    これは、分割操作を行うことを意味します.
    文字列はトークンと呼ばれます.
    StringTokenizerクラス.
    java.utilパッケージのString.Tokenizerをインポートする必要があります.
    ★StringTokenizerクラスは互換性を保つことを目的としています
    保留、★文字列をグループ化(解析)するために、
    Stringクラスのsplit()メソッドはjavaです.util.regexパッケージ
    使用を推奨します.
    生成者
  • プロトタイプ
    StringTokenizer(String str)
    StringTokenizer(String str, String delim)
    StringTokenizer(String str, String delim, boolean returnDelims)
    →指定された文字列strを単語に分離するオブジェクトを作成します.
    スペース(区切り)文字をdelimに含まれる文字として処理します.
    Delimsをtrueに戻すと
    区切り記号も分離されたデータとして処理されます.
  • StringTokenizerクラスコードの説明📝
    import java.io.InputStreamReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
    
    public class Test136
    {
    	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, ",");     //위에 적은거 2번째 생성자
    		//--  strTemp를 대상 문자열로...
    		//	  『,』를 구분자로...
    
    		strArr = new String[st.countTokens()];       // st.countTokens() -> 4
    		//-- int countTokens()
    		//   : 파싱된 문자열의 갯수를 반환(리턴)한다.
    
    		n = 0;
    		
    		while (st.hasMoreTokens())      // true / false
    		{
    			strArr[n++] = st.nextToken();    // 해즈모어토큰즈는 망만보는아이  넥스트토큰은 가지고 오는 역할
    										     // 다음 값이 있으면 해즈모어토큰이 트루반환
    		}
    		//-- 『hasMoreTokens』
    		//    : 사용할 수 있는 토큰이 남아있는 경우 true 를 반환.
    		//      더 이상 사용할 토큰이 남아있지 않은 경우 false 를 반환.
    		//      확인 결과만 반환할 뿐...
    		//      실제 내용을 읽어들이는 헤드(▼)를 이동시키지 않는다.
    
    		//-- 『nextToken()』
    		//    : 다음 토큰을 얻어온다.
    		//      다음 토큰을 얻어오며 헤드(▼)를 이동시키게 된다.
    		//      구분자를 바꾸었을 경우 다음 호출에도
    		//      바뀐 구분자를 이용하여 토큰을 분리한다.
    
    		System.out.print("파싱된 토큰(문자열) : ");
    		for (String str : strArr)
    			System.out.print(str + " ");
    		System.out.println();
    
    		//--==>>파싱할 문자열 입력(컴마구분) : 사과,딸기,포도,복숭아
    		//		파싱된 토큰(문자열) : 사과 딸기 포도 복숭아
    		//		계속하려면 아무 키나 누르십시오 . . .
    	}
    }