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()
가지고 있는 토큰을 순서대로 하나하나 순서대로 반환한다.
댓글