반응형
안녕하세요. 두부입니다.
오늘은 문자열을 분리하는 방법 중 하나인 StringTokenizer 클래스에 대해서 알아보겠습니다.
StringTokenizer 클래스 정의
StringTokenizer 클래스는 주로 BufferedReader 클래스의 메서드로 입력을 받을 때 사용합니다. 특정 문자를 기준으로 문자열을 여러 개의 토큰으로 분리하는 클래스입니다.
우선 StringTokenizer 클래스를 사용하려면 라이브러리를 임폴트 해주어야 합니다.
import java.util.StringTokenizer;
StringTokenizer 생성
// 띄어쓰기 기준으로 문자열 분리
StringTokenizer st = new StringTokenizer(문자열);
// 구분자 기준으로 문자열 분리
StringTokenizer st = new StringTokenizer(문자열, 구분자);
// 구분자 기준으로 문자열을 분리할 경우 구분자도 토큰에 넣을지 유무
StringTokenizer st = new StringTokenizer(문자열, 구분자, TRUE/FALSE);
StringTokenizer 클래스를 생성하는 방식은 총 3가지가 있습니다. 첫 번째는 띄어쓰기를 기준으로 문자열을 분리하는 가장 기본적인 방식입니다. 두 번째는 본인이 선택한 구분자를 명시해서 문자열을 나눌 수 있는 방식입니다. 세 번째의 경우는 문자열을 분리할 때 구분자의 포함 여부에 대해서 결정할 수 있습니다.
그렇다면 구분자는 어떤 식으로 포함돼서 나누어지는 걸까요? 세 번째의 경우에 대해서 알아보겠습니다.
import java.util.StringTokenizer;
public class solution {
public static void main(String[] args) {
String str = "Hellow!World";
StringTokenizer st = new StringTokenizer(str, "!", true);
System.out.println(st.nextToken()); // Hello
System.out.println(st.nextToken()); // !
System.out.println(st.nextToken()); // World
}
}
문자열 "Hellow!World"를 구분자를 포함해서 분리하는 코드입니다. 예시를 보시면 Hello, !, World로 구분자는 별도로 구분되는 것을 볼 수 있습니다.
구분자를 여러 개 사용할 수 있나요?
구분자를 여러 개 사용하고 싶을 경우도 생기는데요. 위 질문에 대한 대답은 "예"입니다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
String str = "구분자를*여러개-사용해보자.";
StringTokenizer st = new StringTokenizer(str, "*-");
System.out.println(st.nextToken()); // 구분자를
System.out.println(st.nextToken()); // 여러개
System.out.println(st.nextToken()); // 사용해보자.
}
}
StringTokenizer 클래스의 두 번째 인자에 구분자를 이어서 여러 개 작성하면 됩니다.
StringTokenizer 메서드
StringTokenizer 클래스에는 다양한 메서드를 제공하고 있습니다. 자주 사용하는 것들만 소개하겠습니다.
반환값 | 메서드명 | 설명 |
boolean | hasMoreTokens() | 남아있는 토큰이 있으면 true, 없으면 false |
String | nextToken() | 객체에서 다음 토큰을 반환 |
int | countTokens() | 총 토큰의 개수를 반환 |
StringTokenizer와 split 차이
StringTokenizer | split |
java.util에 포함된 클래스 문자 또는 문자열로 구분 빈 문자열을 토큰으로 인식하지 않음 결과값이 문자열 |
String 클래스에 포함된 메서드 정규표현식으로 구분 빈 문자열을 토큰으로 인식함 결과값이 배열 |
반응형
'개발 & 데이터베이스 > JAVA' 카테고리의 다른 글
자바 이클립스 설정: 탭(Tab)을 공백(space) 4개로 변경하기 (0) | 2022.10.11 |
---|---|
자바 해당 경로에 있는 모든 파일 압축하는 방법 (0) | 2022.10.11 |
[JAVA] 정규표현식 정의와 자주 쓰이는 예제 (0) | 2022.08.23 |
[JAVA] 자바 스레드 (Thread) 개념과 사용 방법 2가지 (start, join 메소드) (0) | 2022.08.09 |
[JAVA] 자바 JDK, JRE의 차이점과 사용자 디렉터리 구성 요소 (0) | 2022.08.08 |