StringTokenizer 클래스를 이용하여 문자열 분리 - new StringTokenizer();
- 문자열이 한 종류의 구분자로 구분되어 있는 경우 StringTokenizer 클래스를 이용하여 분리할 수 있다.
- Ex. "동해물과 백두산이 마르고 닳도록" : 공백의 구분자
- Ex. "010-1234-5678" : 하이픈(-)의 구분자
- 분리하고자 하는 문자열을 StringTokenizer 생성자의 매개변수로 전달한다.
- StringTokenizer 객체 안에 있는 문자열을 nextToken() 메서드를 이용하여 꺼낼 수 있다.
- nextToken() 으로 문자열을 꺼내 온다면 Stringtokenizer 객체의 해당 문자열(토큰)은 사라진다.
- StringTokenizer 객체에 문자열(토큰)이 없는데 꺼내려고 하면 java.util.NoSuchElementException 예외가 발생하여 프로그램이 종료되기 때문에 주의해야 한다.
코드
// 문자열이 공백으로 구분되어 있는 경우
public class Main {
public static void main(String[] args) {
// 구분할 문자열
String str = new String("동해물과 백두산이 마르고 닳도록");
// 공백을 기준으로 분리하는 경우 " " 생략 가능
StringTokenizer st = new StringTokenizer(str, " ");
// 분리된 문자열을 담을 문자열 배열 생성
// countTokens() : 현재 갖고 있는 토큰(문자열)의 개수를 반환하는 메서드
String[] strArr = new String[st.countTokens()];
int i = 0;
while (st.hasMoreTokens()) { // 토큰(문자열)이 존재할 경우 true 리턴
strArr[i] = st.nextToken();
i ++;
}
// 분리된 문자열 출력
for (int j = 0; j < strArr.length; j++){
System.out.printf("strArr[%d] : %s\n", j, strArr[j]);
}
}
}
// 공백 이외의 문자로 구분되어 있는 경우
public class Main {
public static void main(String[] args) {
// 구분할 문자열
String str = new String("010-1234-5678");
StringTokenizer st = new StringTokenizer(str, "-");
// countTokens() : 현재 갖고 있는 토큰(문자열)의 개수를 반환하는 메서드
int count = st.countTokens();
// 분리된 문자열을 담을 문자열 배열
String[] strArr = new String[count];
// nextToken() 메서드를 이용하여 분리된 문자열을 하나씩 추출
for (int i = 0; i < count; i++){
strArr[i] = st.nextToken();
}
// 분리된 문자열 출력
for (int i = 0; i < count; i++){
System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
}
}
}
split() 메서드를 이용하여 문자열 분리 - String[]
- String 기본 메서드인 split()을 이용하여 문자열을 문자열 배열로 분리할 수 있다.
- StringTokenizer와 동일하게 구분자를 기준으로 문자열을 분리한다.
- StringTokenizer와의 차이점
- 리턴 타입이 String[] 타입으로 반복문 없이 바로 배열에 담을 수 있다.
- 여러 개의 구분자로 분리할 수 있다.
- split()
- split(String regex) : 해당 구분자로 문자열을 분리하여 배열로 반환
- split([String regex, String regex ... ]) : 여러 개의 구분자로 문자열을 분리하여 배열로 반환
- split(String regex, int limit) : 해당 구분자로 문자열을 분리하여 limit 까지 배열로 반환
코드
// 문자열이 공백으로 구분되어 있는 경우
public class Main {
public static void main(String[] args) {
// 구분할 문자열
String str = new String("동해물과 백두산이 마르고 닳도록");
// split() 공백의 구분자(" ")를 기준으로 분리함.
String[] strArr = str.split(" ");
// 분리된 문자열 출력
for (int i = 0; i < strArr.length; i++) {
System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
}
}
}
// 여러 개의 구분자로 문자열을 분리
public class Main {
public static void main(String[] args) {
// 구분할 문자열
String str = new String("wonkang@tistory.com");
String[] strArr = str.split("[@.]");
// 분리된 문자열 출력
for (int i = 0; i < strArr.length; i++) {
System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
}
}
}
// 문자열을 limit까지 분리
public class Main {
public static void main(String[] args) {
// 구분할 문자열
String str = new String("동해물과 백두산이 마르고 닳도록");
// limit = 2까지 문자열을 자름
String[] strArr = str.split(" ", 2);
// 분리된 문자열 출력
for (int i = 0; i < strArr.length; i++) {
System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
}
}
}
'Langauge > Java' 카테고리의 다른 글
[Java] 문자형 배열을 문자열로 변환 (CharArray to String) (0) | 2022.08.08 |
---|---|
[Java] 문자열을 문자형 배열로 변환 (String to CharArray) (0) | 2022.08.08 |