--> [JAVA] 자바 - 구분자를 통해 문자열 나누기 (StringTokenizer 알아보기)

[JAVA] 자바 - 구분자를 통해 문자열 나누기 (StringTokenizer 알아보기)

StringTokenizer 클래스는 특정 문자열을 구분자를 통해 잘라서 관리할 수 있는 클래스입니다. 구분자를 통해 잘려진 문자를 토큰(Token)이라 부르며 이를 통해 다양한 작업을 처리할 수 있습니다. 

1. 생성자 (Constructor)

StringTokenizer(String str)

나누고자 하는 문자열을 인자로 가지는 생성자

StringTokenizer(String str, String delimeter)

나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimeter)를 인자로 가지는 생성자

StringTokenizer(String str, String delimeter, boolean return delime

나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimeter) 그리고 구분자를 토큰(Token)에 포함할지를 설정하는 인자를 넘겨주는 생성자입니다. 
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		//인자 1개를 가지는 생성자를 통해 객체 생성
		StringTokenizer sample = new StringTokenizer("Hello/Java/World/!!");

		//인자 2개를 가지는 생성자를 통해 객체 생성
		StringTokenizer sample2 = new StringTokenizer("Hello/Java/World/!!", "/");

		// true : 구분자를 토큰에 포함함
		StringTokenizer sample3 = new StringTokenizer("Hello/Java/World/!!", "/", true);

		// false : 구분자를 토큰에 포함하지 않음
		StringTokenizer sample4 = new StringTokenizer("Hello/Java/World/!!", "/", false);

		System.out.println("************************************");
		System.out.println("구분자를 토큰으로 포함");

		while(sample3.hasMoreTokens())
		{
			System.out.println(sample3.nextToken());
		}

		System.out.println("************************************");
		System.out.println("구분자를 토큰으로 포함하지 않음");

		while(sample4.hasMoreTokens())
		{
			System.out.println(sample4.nextToken());
		}
	}
}

▼ sample1 과 sample2 객체를 생성하는 생성자 함수는 직관적으로 이해가 될 것입니다. sample3 객체와 sample4 객체의 경우는 세 번째 인자 정보가 더 추가되었는데 위 표에서 설명 한대로 구분자를 토큰(Token)에 포함할지 말지를 설정하는 인자입니다. 즉 sample3 객체를 예로 해당 인자값으로 true로 넘겨주는 것은 두 번쨰 인자값으로 넘겨준 "/" 구분자도 토큰으로 포함하겠다는 의미입니다. 결과를 보여드리기 위해 sample3 객체와 sample4의 의해서 생성된 토큰을 출력하는 구문을 추가하였습니다. 

 

출력 화면

▼ 구분자를 토큰으로 포함하는 sample3 객체의 경우는 "/" 구분자까지 포함하여 6개의 토큰이 생성됩니다. 반면 구분자를 토큰으로 포함하지 않는 sample4 객체는 "/" 구분자를 제외한 4개의 토큰이 생성되는 것을 확인할 수 있습니다.

 

 

 


2. StringTokenizer 클래스의 Method

구분자를 통해 문자열을 나누었다면 각각의 문자형 데이터에 접근할 수 없다면 소용이 없을 겁니다. StringTokenizer 클래스는 나누어진 토큰을 제어하기 위한 여러 가지 Method를 제공합니다.

 

Method 설명
int countTokens(); 구분자를 통해 생성되는 토큰(Token)에 개수
boolean hasMoreElements 토큰(Token)이 남아있는지를 판단
boolean hasMoreTokens 토큰(Token)이 남아있는지를 판단
Object nextElement() nextToken()과 동일하지만 반환형이 Object
String nextToken() 다음 토큰(Token)에 해당하는 문자열 반환
String nextToken(String delimeter) 구분자에 의해 나누어진 다음 토큰(Token)에 해당하는 문자열 반환
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		StringTokenizer sample = new StringTokenizer("Hello/Java/World/!!", "/", false);

		System.out.println("생성된 토큰 수 : " + sample.countTokens());

		while(sample.hasMoreTokens())
		{
			System.out.println(sample.nextToken());
		}
	}
}

▼ "Hello/Java/World/!!" 문자열을 "/" 구분자를 통해 나눈 토큰을 생성하도록 하였습니다. 각 토큰에 접근하기 위해서는 while() 구문을 사용하였고 hasMoreToken() 메소드를 통해 접근할 수 있는 토큰이 남아있는지를 체크하도록 합니다. nextToken() 메소드를 통해 문자형 데이터를 출력합니다.

댓글(0)

Designed by JB FACTORY