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 (Java Platform SE 8 )
Constructs a string tokenizer for the specified string. All characters in the delim argument are the delimiters for separating tokens. If the returnDelims flag is true, then the delimiter characters are also returned as tokens. Each delimiter is returned a
docs.oracle.com
생성자
생성자 | 설명 |
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[] |
빈 문자열을 토큰으로 인식하지 않음 | 빈 문자열을 토큰으로 인식함 |
참고 :
[Java] StringTokenizer와 Split() 메서드 언제 써야할까?
우선 StringTokenizer에 대해 알아보자. java.util.StringTokenizer 클래스란? 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 잘라내는 데 사용된다. 예) “100,200,300,4
velog.io
'코테 > 개념 정리' 카테고리의 다른 글
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 |