- 자바 입력값 분리 (StringTokenizer)
StringTokenizer
- 문자열을 공백기준혹은 구분자기준으로 분리하며
String배열로 반환하는 split 과 다르게 String 타입으로 반환하는 클래스 - StringTokenizer은 java.util 패키지의 클래스이며, split은 String의 메소드이다.
✅ StringTokenizer는 java.util패키지의 클래스이므로 import필요
import java.util.StringTokenizer;
StringTokenizer 사용방법 3가지
// 1. 문자열을 띄어쓰기 기준으로 분리
StringToKenizer st = new StringToKenizer(문자열);
// 2. 문자열을 구분자기분으로 분리
StringToKenizer st = new StringToKenizer(문자열,구분자);
// 3. 문자열을 구분자 기준으로 분리하는데
// 구분자도 토큰으로 넣을지(true)
// 구분자는 분리된 문자열토큰에 포함 안시킬지(false) 기본값은 false
StringToKenizer st = new StringToKenizer(문자열,구분자,true/false);
1. 문자열을 띄어쓰기 기준으로 분리
import java.util.*;
public class Main {
public static void main(String args[]) {
String str = "안녕하세요 지금은 2022년 입니다.";
StringTokenizer st = new StringTokenizer(str); // 분리될 문자열
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
/* output
안녕하세요
지금은
2022년
입니다.
*/
✅ 구분자없으면 기본값 공백을 기준으로 분리
2. 문자열을 구분자기준으로 분리
import java.util.*;
public class Main {
public static void main(String args[]) {
String str = "장마가&시작&됐네요&.";
StringTokenizer st = new StringTokenizer(str,"&"); // 문자열, 구분자
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
/* output
장마가
시작
됐네요
.
*/
✅ 구분자미포함 false가 기본값이기때문에 생략해주어도 무방
3. 문자열을 구분자 기준으로 분리하고 구분자 포함여부 선택
import java.util.*;
public class Main {
public static void main(String args[]) {
String str = "장마가&시작&됐네요&.";
StringTokenizer st = new StringTokenizer(str,"&",true); // 문자열, 구분자, 구분자포함
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
/* output
장마가
&
시작
&
*/
✅토큰을 받아 출력문을 4번 사용했으므로 4개까지만 출력
구분자 여러개
import java.util.*;
public class Main {
public static void main(String args[]) {
String str = "양배추&라면&&&우유!/&브로콜리!//고구마&";
StringTokenizer st = new StringTokenizer(str,"!&/"); // 문자열, 구분자
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
/* output
양배추
라면
우유
브로콜리
고구마
*/
✅ 구분자는 쉼표구분없이 여러개 줄 수 있다
StringTokenizer 메소드
| 반환값 | 메소드명 | 설명 |
| boolean | hasMoreTokens() | 남아있는 토큰있으면 treu 없으면 false |
| String | nextToken() | 객체에서 다음 토큰을 반환 |
| String | nextToken(String delim) delimiter:구분자 | delim 기준으로 다음 토큰반환 |
| boolean | hasMoreElements() | hasMoreTokens와 동일한 엘레먼트보다 토큰으로 된 메소드를 주로 씀 |
| Object | nextElement() | nextToken메소드와 동일하지만 문자열이 아닌 객체를 리턴 |
| int | countTokens() | 총 토큰의 개수를 리턴 |
// hasMoreTokens(), nextToken(), countTokens()
import java.util.*;
public class Main {
public static void main(String args[]) {
String str = "양배추&라면&&&우유!/&브로콜리!//고구마&";
StringTokenizer st = new StringTokenizer(str,"!&/"); // 문자열, 구분자
while(st.hasMoreTokens()){
System.out.println("남아있는 토큰 개수 : "+st.countTokens()+"개");
System.out.println(st.nextToken());
}
}
}
/* output
남아있는 토큰 개수 : 5개
양배추
남아있는 토큰 개수 : 4개
라면
남아있는 토큰 개수 : 3개
우유
남아있는 토큰 개수 : 2개
브로콜리
남아있는 토큰 개수 : 1개
고구마
*/
StringTokenizer vs split
| StringTokenizer | split |
| java.util 패키지의 클래스 | String의 메소드 |
| 문자로 구분 | 정규표현식으로 구분 |
| 문자열로 받음 | 문자열배열로 받음 |
| 구분자를 포함 할 수 있음 | 구분자를 포함하지 못함 |
| 구분자 여러개 줄 때 분리 X | 구분자 여러개 줄 때 | 로 구분 |
✅ 추가
str.split("") 로 빈칸이없는부분도 자를 수 있다.
StringTokenizer(str,"")는 안된다
'Java' 카테고리의 다른 글
| JAVA - 조건문 ( switch - case ) (0) | 2022.07.02 |
|---|---|
| JAVA - 조건문 ( if, else if, else ) (0) | 2022.07.02 |
| JAVA - 문자열 분리 ( split ) (0) | 2022.06.28 |
| JAVA - 입력받기 ( BufferedReader ) (0) | 2022.06.27 |
| JAVA - 입력받기 ( Scanner.next, nextLine ) (0) | 2022.06.26 |