본문 바로가기

Java/본격 Java 기타클래스

[Java] StringTokenizer 클래스

StringTokenizer클래스

 - java.util 패키지에 있는 클래스로 문자열을 지정한 구분자를 기준으로 자릅니다.
 - String클래스의 split() 메소드와 비슷한 부분이 있으나 구분자 지정방법에서 다릅니다.
 - 생성자
 StringTokenizer(String str) : 문자열을 공백(띄어쓰기)을 기준으로 자름
 StringTokenizer(String str, String delim) : str을 delim기준으로 자름(delim은 미포함)
 stringTokenizer(String str, String delim, boolean returnDelims) : str을 delim기준으로 자름(delim은 boolean returnDelims이 true이면 포함시킴)

 - 주요 메소드
 리턴 / 메소드명 및 설명
 int / countTokens() : 문자열 조각(token)의 개수
 boolean / hasMoreElements() : 다음 토큰이 있는지 여부(루프의 조건으로 사용)
 boolean / hasMoreTokens() : hasMoreElements()와 동일
 Object / nextElement() : 다음 요소(토큰)을 리턴
 String / nextToken() : nextElement()와 동일

.

.

예제

import java.util.*;

class StringToken1{
	public static void main(String[] args) {
		String str1 = "aa bb cc dd";
		StringTokenizer st = new StringTokenizer(str1);
		// str1의 문자열을 공백문자를 기준으로 잘라냄
		System.out.println("StringTokenizer 사용 - 1");

		while (st.hasMoreTokens()){
			// st에 토큰이 더 있으면
			System.out.print(st.nextToken() + "  ");
			// 토큰을 가져옴
			// aa bb cc dd
		}
		System.out.println("\n StringTokenizer 사용 - 2");


		String str2 = "aa:bb:cc:dd";
		StringTokenizer st2 = new StringTokenizer(str2,":");
		// str2의 문자열을 콜론(:)을 기준으로 자름
		// 기본적으로 구분자는 포함되지 않음
		while (st2.hasMoreTokens()){
			System.out.print(st2.nextToken() + "  ");
		} // aa bb cc dd
		// StringTokenizer는 루프를 한 번만 돌릴 수 있음
		// 다시 사용하기 위해서는 다시 인스턴스를 생성하거나 배열 등에 담아서 사용해야 함
		System.out.println("\n String split() 사용");

		// String클래스의 split()메소드 사용
		// 문자열을 자르는 기준이 되는 구분자가 한 가지 종류일 경우에는 split()이 사용하기 더 편함
		String str3 = "aa bb cc dd";
		String[] str3Arr = str3.split(" ");
		for (int i = 0 ; i < str3Arr.length ; i++)
		{
			System.out.print(str3Arr[i] + "  ");
		}
		System.out.println("\n String split() 사용 - 역 배열");
		for (int i = str3Arr.length - 1 ; i >= 0 ; i--)
		{
			System.out.print(str3Arr[i] + "  ");
		}

	}
}

.

.

 문자열을 자르는 기준이 되는 구분자가 한 가지 종류일 경우에는 split()이 사용하기 더 편할 수 있다.

.

.

StringTokenizer가 필요한 상황을 알아보자

import java.util.*;

class StringToken2{
	public static void main(String[] args) {
		String str = "1+2-3*4/5";
		StringTokenizer st = new StringTokenizer(str, "+-*/");
		// 구분자를 여러 글자를 입력하면 각 글자별로 구분자로 동작함
		// StringTokenizer에서는 두글자 이상을 묶어서 구분자로 사용할 수 없음
		while (st.hasMoreTokens())
		{
			System.out.print(st.nextToken() + "  "); // 1  2  3  4  5
		}
		System.out.println();

		StringTokenizer st2 = new StringTokenizer(str, "+-*/", true);
		// 생성자의 세번째 매개변수로 true를 넣으면 구분자도 토큰에 들어감
		while (st2.hasMoreTokens())
		{
			System.out.print(st2.nextToken() + "  "); // 1  2  3  4  5
		}
		System.out.println();
	}
}

 문자열 자르는 기준이 여러개일경우에는 StringToeknizer를 사용하는 것이 좋다.

.

.

 

728x90
반응형

'Java > 본격 Java 기타클래스' 카테고리의 다른 글

[Java] Anonymous의 활용법  (0) 2020.07.15
[Java] Anonymous란?  (0) 2020.07.15
[Java] 랜덤 클래스 - 로또 번호 만들기  (0) 2020.07.02
[Java] Math 클래스  (0) 2020.07.02
[Java] BigDecimal 클래스  (0) 2020.07.02