- StringTokenizer 클래스
문자열이 특정한 기호(구분자)로 연결되어 있는 경우, 해당 기호를 기준으로 문자열을 분리하여 가져올 수 있도록 하는 기능을 가지고 있는 클래스다. 이와 비교되는 것이 String 클래스의 split() 메서드다. 코드로 보자.
1) String 클래스의 split() 메서드
String[] result = "문자열".split("구분기호");
public class StringSplitExample {
public static void main(String[] args){
String text = "자바&스플릿,테스트,하기-성공";
String[] names = text.split("&|,|-"); // | 기호로 구분기호들을 구분해준다.
for(String name : names) {
System.out.println(name);
}
}
}
결과는 다음과 같이 출력된다.
자바
스플릿
테스트
하기
성공
2) StringTokenizer 클래스
StringTokenizer 클래스는 다음과 같이 사용된다.
StringTokenizer st = new StringTokenizer("문자열", "구분기호");
String text = "자바/스프링토크나이저/테스트";
StringTokenizer st = new StringTokenizer(text, "/");
결과는 다음과 같이 출력된다.
자바
스프링토크나이저
테스트
StringTokenizer 클래스에는 이 외에도 문자열을 분리해올 때 사용할 수 있는 메서드들이 존재한다.
1) countTokens() - int타입 / 남아있는 토큰의 수를 구해온다.
2) hasMoreTokens() - boolean타입 / 토큰이 남아있는지의 여부를 판별한다.
3) nextToken() - String타입 / 토큰을 하나씩 꺼내온다.
*토큰 - 구분기호로 구분된 각 문자열을 뜻함
위 메소드 사용 시 주의할 점은, nextToken()은 토큰을 하나씩 꺼내온 뒤 남아있는 토큰이 없으면 예외를 발생시키기 때문에 반드시 hasMoreToken()를 통해 토큰이 남아있는지를 먼저 판별한 후 그 다음에 사용해야 한다는 것이다.
위 메소드들을 이용해 토큰을 구분기호로부터 분리하여 가져오는 것은 다음의 두 가지 방법으로 가능하다.
public class StringTokenizerExample{
public static void main(String[] args){
String text = "자바/스프링토크나이저/테스트";
//방법 1 - countTokens()로 전체 토큰 수를 얻어 반복문으로 하나씩 얻어온다.
StringTokenizer st = new StringTokenizer(text, "/");
int countTokens = st.countTokens();
for(int i=0;i<countTokens;i++) {
String token= = st.nextToken(); //반복문이 토큰의 수 만큼만 작업하기 때문에 hasMoreTokens()를 쓰지 않아도 된다.
System.out.println(token);
}
//방법 2 - 토큰이 있는지 확인하고 하나씩 꺼내온다.
st = new StringTokenizer(text, "/");
while(st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
}
}
결과는 다음과 같이 출력된다.
자바
스프링토크나이저
테스트
참고 : 도서 <이것이 자바다>
'TIL' 카테고리의 다른 글
<HTML> 기본 태그들 (2) (0) | 2021.11.16 |
---|---|
<HTML> 기본 태그들 (1) (0) | 2021.11.15 |
<자바 Java> 컬렉션 프레임워크(Collection Framework) (1) - List (0) | 2021.11.13 |
<자바스크립트> Ajax (0) | 2021.11.12 |
<트러블슈팅> getPathInfo() = null 에러 (0) | 2021.11.11 |