Post

Java : StringTokenizer

StringTokenizer

  • 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 토큰(token)이라고 부릅니다.
  • 사용하기 위해서는 java.util.StringTokenizer를 import 해야합니다.

생성자(Constructor)

생성자설명
StringTokenizer(String str);전달된 매개변수 str을 기본(default) delim으로 분리합니다. 기본 delimiter는 공백 문자들인 “ \t\n\r\t”입니다.
StringTokenizer(String str,String delim);특정 delim으로 문자열을 분리합니다.
StringTokenizer(String str,String delim,boolean returnDelims);str을 특정 delim으로 분리시키는데 그 delim까지 token으로 포함할지를 결정합니다. 그 매개변수가 returnDelims로 true일시 포함, false일땐 포함하지 않습니다.

메소드(Method)

메소드설명
int countTokens()남아있는 token의 개수를 반환합니다. 전체 token의 갯수가 아닌 현재 남아있는 token 개수입니다.
boolean hasMoreElements(), boolean hasMoreTokens()다음의 token을 반환합니다. 토큰이 더 있으면 true 없으면 false를 반환합니다. StringTokenizer는 내부적으로 어떤 위치의 토큰을 사용하였는지 기억하고 있고 그 위치를 다음으로 옮깁니다.
Object nextElement(), String nextToken()이 두가지 메소드는 다음의 토큰을 반환합니다. 두가지 메소드는 같은 객체를 반환하는데 반환형은 다릅니다. nextElement는 Object를, nextToken은 String을 반환하고 있습니다.

예제

  • String 클래스에 있는 split 메소드를 이용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] ar){
	String str="this string includes default delims";
	System.out.println(str);
	System.out.println();
		
	System.out.println("==========using split method============");
	String []tokens=str.split(" ");
		
	for(int i=0;i<tokens.length;i++){
		System.out.println(tokens[i]);
	}
}
1
2
3
4
5
6
7
8
9
// 결과
this string includes default delims

==========using split method============
this
string
includes
default
delims

​ String 클래스의 메소드 split 메소드를 사용해 StringTokenizer를 흉내낼 수 있습니다. split이 반환하는 값은 String 배열입니다.

  • Default Delim을 이용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] ar){
	String str="this string\tincludes\ndefault delims";
	StringTokenizer stk=new StringTokenizer(str);
	System.out.println(str);
	System.out.println();
		
	System.out.println("total tokens:"+stk.countTokens());
	System.out.println("================tokens==================");
	while(stk.hasMoreTokens()){	// 현재위치의 다음에 토큰이 있는지 확인합니다.
		System.out.println(stk.nextToken());	// 다음 토큰을 가져옵니다.
	}
	System.out.println("total tokens:"+stk.countTokens());
}
1
2
3
4
5
6
7
8
9
10
11
12
// 결과
this string includes
default delims

total tokens:5
================tokens==================
this
string
includes
default
delims
total tokens:0
  • 특정 Delim을 이용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] ar){
	String str="this-=string-includes=delims";
	StringTokenizer stk=new StringTokenizer(str,"-=");	
    // -와 = 문자로 문자열을 분리합니다.
	System.out.println(str);
	System.out.println();
		
	System.out.println("total tokens:"+stk.countTokens());
	System.out.println("================tokens==================");
	while(stk.hasMoreTokens()){
		System.out.println(stk.nextToken());
	}
	System.out.println("total tokens:"+stk.countTokens());
}
1
2
3
4
5
6
7
8
9
10
// 결과
this-=string-includes=delims

total tokens:4
================tokens==================
this
string
includes
delims
total tokens:0

-= 로 문자를 쪼갭니다. -= 도가능합니다.

  • String의 split과 비교
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] ar){
	String str="this-=string-includes=delims";
	System.out.println(str);
	System.out.println();
		
	String[] tokens=str.split("-=");
	System.out.println("total tokens:"+tokens.length);
	System.out.println("================tokens==================");
		
	for(int i=0;i<tokens.length;i++){
		System.out.println(tokens[i]);
	}
		
}
1
2
3
4
5
6
7
// 결과
this-=string-includes=delims

total tokens:2
================tokens==================
this
string-includes=delims

​ 정확히 -= 로 문자를 쪼갭니다.

  • Delim까지 토큰으로 포함합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] ar){
	String str="this-string-includes=delims";
	StringTokenizer stk=new StringTokenizer(str,"-=",true);
    // returnDelims를 true로 함으로써, Delim을 토큰으로 포함시킵니다.
	System.out.println(str);
	System.out.println();
		
	System.out.println("total tokens:"+stk.countTokens());
	System.out.println("================tokens==================");
	while(stk.hasMoreTokens()){
		System.out.println(stk.nextToken());
	}
	System.out.println("total tokens:"+stk.countTokens());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
// 결과
this-string-includes=delims

total tokens:7
================tokens==================
this
-
string
-
includes
=
delims
total tokens:0

-= 까지 토큰으로 포함하기 때문에 총 토큰 수가 7개로 나오고 토큰에도 포함된 것을 볼 수 있습니다.


출처 : https://reakwon.tistory.com/90

This post is licensed under CC BY 4.0 by the author.