728x90
StringTokenizer
- 문자열을 구분자를 이용하여 분리할 때 사용 가능
말 그대로 String(문자열)을 Tokenizer(조각화)한다!
생성자
StringTokenizer st = new StringTokenizer("abc def"); // 띄어쓰기(공백) 기준
StringTokenizer st2 = new StringTokenizer("abc,def", ","); // 구분자 기준
StringTokenizer st3 = new StringTokenizer("abc,def", ",", true); // (or false)
1. 문자열만 이용
- 띄어쓰기를 기준으로 나눠지게 된다.
- ex) abc와 def
2. 문자열, 구분자
- 구분자를 기준으로 나누어진다.
- ex) abc와 def
3. 문자열, 구분자, true/false
- true면 구분자도 토큰에 포함, false면 구분자는 구분하는데에만 사용되고 토근에는 포함X
- ex) true → abc와 ,와 def
- ex) false → abc와 def
- 디폴트는 false
띄어쓰기 기준으로 분리
StringTokenizer st = new StringTokenizer("abc def");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
구분자를 기준으로 분리
StringTokenizer st2 = new StringTokenizer("abc,def", ",");
while (st2.hasMoreTokens()) {
System.out.println(st2.nextToken());
}
StringTokenizer st3 = new StringTokenizer("abc,def", ",", true); // (or false)
while (st3.hasMoreTokens()) {
System.out.println(st3.nextToken());
}
구분자가 여러 개라면?
여러 개의 문자를 구분자로 토큰을 만들 수 있다.
String str = "blog > Gyuri! https://newbie-in-softengineering.tistory.com/";
StringTokenizer st4 = new StringTokenizer(str, ">!");
while (st4.hasMoreTokens()) {
System.out.println(st4.nextToken());
}
StringTokenizer 메서드
리턴값 | 메서드명 | 역할 |
boolean | hasMoreTokens() | 남아있는 토큰이 있으면 true, 없으면 false 리턴 |
String | nextToken() | 객체에서 다음 토큰을 반환 |
String | nextToken(String delim) | delim 기준으로 다음 토큰을 반환 |
boolean | hasMoreElemtnes() | hasMoreTokens와 비슷 자주 쓰이지 않음 |
Object | nextElement() | nextToken 메서드와 비슷하지만, 문자열이 아닌 객체를 리턴 |
int | countTokens() | 총 토큰의 개수를 리턴 |
StringTokenizer와 split의 차이
둘 다 문자열을 파싱하는데 사용할 수 있다.
StringTokenizer는 java.util에 포함되어 있는 클래스이지만, split은 String 클래스에 속해있는 메서드라는 점에서 차이가 있
다.
또, StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split은 정규표현식으로 구분한다.
StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만, split은 빈 문자열도 토큰으로 인식한다는 차이가 있다.
그리고 StringTokenizer는 결과값이 문자열이라면, split은 결과값이 문자열 배열이다. 따라서 StringTokenizer를 이용할 경우 전체 토큰을 보고싶다면 반복문을 이용해 하나하나 뽑아야 한다.
참고
'JAVA > Java Study' 카테고리의 다른 글
[Java] static은 언제, 어떻게 사용해야 할까? (1) | 2024.02.16 |
---|---|
[Java] 이진 탐색 트리 - 재귀 형태 구현 (0) | 2024.02.05 |
[Java] StringJoiner (0) | 2024.01.28 |
[Java] HashMap : value로 key 찾기 (1) | 2024.01.28 |
[Java] 진수 변환 쉽게하기 (10진수 ↔ 2진수, 8진수, 16진수) (1) | 2024.01.28 |