StringTokenizer 클래스란?
StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰(token)으로 분리하는 클래스이다.
즉, 문자열을 구분자로 분리해주는 클래스이다.
만약 BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들인다.
BufferedReader 클래스만이 아니더라도, 공백 기준으로 혹은 콤마 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 이용한다.
StringTokenizer 라이브러리
import java.util.StringTokenizer;
java.util.StringTokenizer를 import해야 사용가능하다.
생성자(Constructor)
//1. 절달된 매개변수 str을 기본(default) delim으로 분리.
//기본 delimiter는 공백 문자:" \t\n\r\t"
public StringTokenizer(String str);
//2.특정 delim으로 문자열을 분리
public StringTokenizer(String str,String delim);
//3. str을 특정 delim으로 분리시키는데 그 delim까지 token으로 포함할지를 결정
//매개변수가 returnDelims로 true일시 포함, false일땐 포함하지 않음
//default : false
public StringTokenizer(String str,String delim,boolean returnDelims);
StringTokenizer 메서드
리턴값 | 메서드명 | 설명 |
boolean | hasMoreTokens() | 남아있는 토큰이 있으면 true 리턴, 더 이상 토큰이 없으면 false 리턴 |
String | nextToken() | 객체에서 다음 토큰을 반환 |
String | nextToken(String delim) | delim 기준으로 다음 토큰을 반환 |
boolean | hasMoreElements() | hasMoreTokens와 동일한대 엘레먼트보다 토큰으로 된 메서드를 주로 사용 |
Object | nextElement() | nextToekn 메서드와 동일하지만 문자열이 아닌 객체를 리턴 |
int | countTokens() | 현재 남아있는 토큰의 개수를 리턴 |
StringTokenizer와 Split 차이
StringTokenizer와 split 모두 문자열 파싱하는데 사용할 수 있다.
- StringTokenizer는 java.util에 포함되어 있는 클래스, split는 String클래스에 속해있는 메소드
- StringTokenizer는 문자 또는 문자열로 문자열을 구분한다면, split는 정규표현식으로 구분
- StringTokenizer는 빈 문자열을 토큰으로 인식하지 않지만 split는 빈 문자열을 토큰으로 인식하는 차이가 있습니다.
- Stringtokenizer는 결과값이 문자열이라면 split는 결과 값이 문자열 배열입니다.
따라서 StringTokenizer에서 전체 토큰을 보고 싶다면 반복문을 이용
- split는 배열에 담아 반환하여 데이터를 바로바로 잘라서 반환해주는 Stringtokenizer보다 성능이 안 좋음
예제
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
// st 에 공백을 기준으로 나눈 토큰들을 st 에 저장한다
StringTokenizer st = new StringTokenizer(br.readLine()," ");
// countTokens() 는 토큰의 개수를 반환한다
System.out.print(st.countTokens());
}
}
//결과
AAAA 가가가
3
728x90
'Spring > Java' 카테고리의 다른 글
[java/자바] Session 세션 사용 방법 (0) | 2023.04.17 |
---|---|
[java] 자바 문자열 문자를 n번 반복하기 다양한 방법 (1) | 2023.04.14 |
[ Java ] 자바 환경변수 설정방법 (0) | 2022.08.31 |
[ Java ] Ellipsis (...) 가변인수 사용법 및 예제 (0) | 2022.07.15 |
[ spring ] Spring 4.3 이후 추가된 RequestMapping 관련 상세 어노테이션(@GetMapping / @PostMapping / @PutMapping / @DeleteMapping / @PatchMapping ) (0) | 2022.07.07 |
댓글