문자열을 원하는 구분자(delimiter)를 사용하여 분리하고 싶을 때
StringTokenizer 와 String 메소드 split() 를 사용할 수 있습니다.
같지만 다른 두 가지 방법에 대해서 알아보도록 하겠습니다.
(예제에서는 구분자로 콤마(,) 를 사용하였습니다.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
public class StringDivideTest {
public static void stringTokenizerTest(String str) {
System.out.println("====== stringTokenizerTest() result ======");
StringTokenizer tokenizer = new StringTokenizer(str, ",");
for (int i = 0; tokenizer.hasMoreTokens(); i++) {
System.out.println(i + "번째 : " + tokenizer.nextToken());
}
}
public static void splitTest(String str) {
System.out.println("====== splitTest() result ======");
String split[] = str.split(",");
for (int i = 0; i < split.lenght; i++) {
System.out.println(i + "번째 : " + split[i]);
}
}
public static void main(String[] args) {
String str = "apple,banana,kiwi";
stringTokenizerTest(str);
System.out.println();
splitTest(str);
}
} |
cs |
(1) 일반적인 상황 (데이터+구분자+데이터)
=> 동일하게 동작합니다.
String str = "apple,banana,kiwi";
<결과>
======= stringTokenizerTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
======= splitTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
(2) 구분자 사이에 데이터가 없는 경우(데이터+구분자+구분자+데이터)
=> split 만 공백의 데이터를 반환합니다.
String str = "apple,banana,,kiwi";
<결과>
======= stringTokenizerTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
======= splitTest() result =======
0번째 : apple
1번째 : banana
2번째 :
3번째 : kiwi
(3) 문자열이 구분자로 끝나는 경우 (데이터+구분자)
=> 동일하게 마지막 데이터를 무시하는 방식으로 동작합니다.
마지막 데이터도 표현하고 싶은 경우 split 를 통해서(오버로딩된 다른 메소드) 가능합니다.
String str = "apple,banana,kiwi,";
<결과>
======= stringTokenizerTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
======= splitTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
(4) 문자열이 구분자로 끝나는 경우 (데이터+구분자) - 마지막 데이터를 표현하고 싶을 경우
String str = "apple,banana,kiwi,";
String split[] = str.split(",", -1);
<결과>
======= stringTokenizerTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
======= splitTest() result =======
0번째 : apple
1번째 : banana
2번째 : kiwi
3번째 :
split 메소드는 인자로 regex(정규표현식) 사용하기 때문에
속도적인 측면에서는 StringTokenizer 가 더 성능을 좋다고 볼 수 있습니다.
하지만 예제와 같이 가변적인 요소가 많은 문자열이나 정확한 분리가 필요할 때에는 split 메소드를 사용하는 것이 유용합니다.
'IT > Java' 카테고리의 다른 글
자바 환경변수 설정 (0) | 2015.03.02 |
---|---|
자바 설치 - JDK 다운로드 및 설치방법 (0) | 2015.03.02 |
순서가 보장되는 HashMap - LinkedHashMap (0) | 2015.02.27 |
문자열 포맷 - String.format(), System.out.printf() (0) | 2015.02.19 |
Java this 키워드 (1) | 2015.02.16 |