-
[Java] 유틸리티 API (1) java.util.StringTokenizer 클래스IT/개발(자바, 서블릿, 스프링 등) 2020. 1. 19. 19:07
StringTokenizer 클래스
StringTokenizer는 String의 split() 메서드처럼 문자열을 분리하는 기능이 있다. String의 split() 메서드는 String[] 배열로 분리된 문자열을 반환하지만, StringTokenizer 클래스는 자체적으로 분리된 문자열을 처리한다. StringTokenizer가 자체적으로 가지는 분리된 문자열을 '토큰(token)'이라고 부른다.
StringTokenizer 생성 시 문자열만 지정하면 공백을 기준으로 문자열이 분리된다. 분리된 각 문자열은 토큰이라고 하며 StringTokenizer는 토큰들의 집합이다. 토큰을 처리하는 방법은 StringTokenizer가 커서(cusor)라는 정보를 가지고 있는데 커서는 토큰의 위치를 나타내는 역할을 한다. StringTokenizer를 생성했을 때 초기 커서의 위치는 첫 번째 토큰 앞에 위치한다.
커서를 기반으로 수행되는 메서드를 보면 countTokens() 메서드는 커서 다음에 존재하는 토큰들의 수를 반환한다. 커서 다음에 토큰이 있는지 판단할 땐 hasMoreTokens() 메서드를 사용한다. 현재 커서 다음에 토큰이 있다면 true를 반환한다. StringTokenizer의 nextToken(), nextElement() 메서드는 커서 다음에 위치한 토큰을 반환하고 커서를 다음 토큰으로 이동한다. NextToken()은 String 타입으로 반환하고, nextElement는 Object 타입으로 반환한다. StringTokenizer 생성할 때 세번째 인자에 true를 지정하면 구분자를 토큰에 포함하고, false를 하면 구분자를 토큰에 포함하지 않는다.
public class Test{ public static void main(String[] args){ String msg = "Although the world is full of stuffering, it is full also of the overcoming of"; StringTokenizer st1 = new StringTokenizer(msg); System.out.println("word count : "+st1.countTokens()); System.out.println("=============="); String s = "id=guest&name=Amy&pwd=1004"; StringTokenizer st2 = new StringTokenizer(s, "&"); while(st2.hasMoreTokens()){ System.out.println("남아있는 토큰 수 : "+st2.countTokens()); System.out.println(s2.nextToken()); } System.out.println("=============="); StringTokenizer st3 = new StringTokenizer(s, "=&"); while(st3.hasMoreTokens()){ System.out.println(s3.nextToken()); } } } [실행결과] word count : 16 ============== 남아있는 토큰 수 : 3 id=guest 남아있는 토큰 수 : 2 name=Amy 남아있는 토큰 수 : 1 pwd=1004 ============== id guest name Amy pwd 1004
위의 예제에서 문자열을 분리하는 기준으로 사용하는 구분자를 한 개가 아니라 여러 개로 지정하고 있다. "=" 문자 또는 "&" 두 개의 문자를 구분자로 사용한다.
'IT > 개발(자바, 서블릿, 스프링 등)' 카테고리의 다른 글
[Java] 유틸리티 API (4) java.utilDate / java.util.Calendar 클래스 (0) 2020.01.19 [Java] 유틸리티 API (3) java.util.Arrays 클래스 (0) 2020.01.19 [Java] Wrapper 클래스 (0) 2020.01.19 [Java] Math 클래스 (0) 2020.01.18 [Java] StringBuffer/StringBuilder 클래스 (0) 2020.01.18