java.uti.StringTokenizer 클래스 란?
긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 잘라내는 데 사용된다.(split??이라 비슷한건가?아래에서 설명)
예) “1,2,3,4” 이란 문자열이 있을 때 ‘,’를 구분자로 잘라내면 “1”, “2”, “3”, “4” 이라는 4개의 문자열(토큰)을 얻을 수 있다.
StringTokenizer 를 사용하는 방법 이외에도 아래와 같이
- String 의 split(String regex) 이나
- Scanner 의 useDelimiter(String pattern)를 사용할 수 있다.
String[] arr = “1,2,3,4”.split(“,”);
Scanner sc = new Scanner(“1,2,3,4”).useDelimiter(“,”);
이 두 방법은 파라미터가 정규식 표현(regex, pattern)을 받고 있으므로 정규식 표현에 익숙하지 않은 경우 StringTokenizer를 사용하는 것이 간단하게 값을 가져 올 수 있다.
그러나! StringTokenizer의 구분자로 단 하나의 문자 밖에 사용하지 못하기 때문에, 보다 복잡한 형태의 구분자로 문자열을 나누어야 할 때는 어쩔 수 없이 정규식을 사용하는 메소드를 사용해야 한다.
결론적으로 간단한건은 StringTokenizer, 복잡한 건 정규식 표현!
StringTokenizer의 생성자와 메서드
https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html
생성자
생성자 | 설명 |
StringTokenizer(String str) | 문자열(str)을 기본 구분자(띄어쓰기)를 기준으로 나누는 StringTokenizer를 생성한다. |
StringTokenizer(String str, String delim) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다. (구분자는 토큰으로 간주되지 않음) |
StringTokenizer(String str, String delim, boolean returnDelims) | 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성한다. returnDelims의 값을 true로 하면 구분자도 토큰으로 간주된다. |
생성자를 보면 구분자를 지정하지 않으면 기본 구분자인 스페이스( ), 탭(\t), 줄바꿈(\n), 캐리지 리턴(\r)이 기본 구분자로 적용된다.
메서드
리턴값 | 메서드 | 설명 |
String | nextToken() | 객체에서 다음 토큰을 반환 |
String | nextToken(String delim) | delim 기준으로 다음 토큰을 반환한다. |
int | countTokens() | 전체 토큰의 수를 반환한다. |
boolean | hasMoreTokens() | 토큰이 남아있는지 알려준다. |
boolean | hasMoreElements() | hasMoreToken()과 동일한데 엘리먼트보다 토큰으로 된 메서드를 주로 사용 |
Object | nextElement() | nextToken 메서드와 동일하지만 문자열이 아닌 객체를 리턴 |
StringTokenizer와 Split의 차이
StringTokenizer | Split() |
java.util에 포함된 클래스다. | String 클래스에 속해있는 메소드 |
문자로 문자열을 구분 | 정규표현식으로 구분 |
오직 단 한 문자의 구분자만 사용 가능 | 정규표현식을 이용하면 두 문자 이상의 구분자도 사용 가능 |
결과값이 문자열 String | 결과값이 문자열 배열 String[] |
빈 문자열을 토큰으로 인식하지 않음 | 빈 문자열을 토큰으로 인식함 |
참고 :
'코테 > 개념 정리' 카테고리의 다른 글
BFS (Breadth First Search ) - 너비 우선 탐색 (0) | 2023.12.27 |
---|---|
Java 정렬과 Lamda 사용의 정렬 (0) | 2023.12.25 |
[ Heap ] 힙이란? 우선순위 큐란? (0) | 2023.12.23 |
리스트 ArrayList <-> 배열 Array 변환 (1) | 2023.12.18 |
자료구조 - 스택(Stack) / 큐(Queue)에 관하여... (0) | 2023.12.09 |