본문 바로가기
JAVA BASE/lang & util

12. [자바] StringTokenizer클래스

by staticClass 2020. 12. 28.

StringTokenizer클래스?

StringTokenizer는 문자열을 지정된 구분자(deilmiter)를 기준으로 토큰(token)이라는
여러 개의 문자열로 잘라내는 데 사용된다.
예를들어 "1,2,3,4,5"를 ','구분자로 잘라내면 "1", "2", "3", "4", "5"의 5개의 문자열(토큰)을
얻을 수 있다.
StringTokenizer을 이용하는 방법 외에도
String클래스의 split()을 이용하는 방법

"1,2,3,4,5".split();

Scanner클래스의 useDelimiter()를 이용하는 방법 등이 있다.

Scanner scan = new Scanner("1,2,3,4,5").useDelimiter(",");
while(scan.hasNextInt()) {
scan.nextInt();
}

하지만 이 두가지 방법은 정규식을 사용해야 하므로 정규식 표현이 어렵다면
StringTokenizer를 사용하는게 더 편리하다.

StringTokenizer의 생성자와 메서드

생성자 / 메서드설 명
StringTokenizer (String str, String delim)문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를
생성한다.(구분자는 토큰으로 간주되지 않음)
StringTokenizer (String str
, String delim
, boolean returnDelims)
문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를
생성한다. returnDelims의 값을 true로 하면 구분자도 토큰으로
간주된다.
int countTokens()전체 토큰의 수를 반환한다.
boolean hasMoreTokens()토큰이 남아있는지 알려준다.
String nextToken()다음 토큰을 반환한다.

StringTokenizer을 사용해보자

String source = "1,2,3,4,5";
StringTokenizer st = new StringTokenizer(source, ",");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
결과
1
2
3
4
5

위의 코드를 보면 이해 할수 있을 것 이라 믿지만😊
String source = "1,2,3,4,5";
구분자로 사용하기 위해 각 숫자의 뒤에 ','를 입력 해주었다.

StringTokenizer st = new StringTokenizer(source, ",");
StringTokenizer의 인스턴스를 생성할 때 나눌 문자열 source와 구분자 ','를 인수로 넘겨주었다.

while(st.hasMoreTokens())
st.hasMoreTokens()는 나누어진 문자열(토큰)이 존재하냐? 존재 : true 존재안함 : false
나누어 저장되있는 문자열이 다 사용되기 전까지 true를 반환한다.

st.nextToken()
가지고 있는 토큰을 순서대로 하나하나 순서대로 반환한다.

댓글