728x90
반응형
#자바 StringTokenizer 클래스를 사용해서 문자열 분리하는 방법 (Split과 차이점)
#StringTokenizer 클래스
-StringTokenizer 클래스는 문자열을 구분자를 기준으로 자를때 사용하는 클래스입니다.
-잘라서 나온 문자열들을 토큰이라고 합니다.
#예시1
-StringTokenizer (String str, String delim) : str 문자열, delim 구분자
-int countTokens() : 토큰의 수를 반홥합니다.
-boolean hasMoreTokens() : 남아 있는 토큰이 있으면 true, 없으면 false를 반환합니다.
-String nextToken() : 토큰을 차례대로 반환합니다.
// 문자열 자르기
String data = "100,200,300,400,500";
int count = 0;
StringTokenizer st1 = new StringTokenizer(data, ",");
while(st1.hasMoreTokens()) {
System.out.println(st1.countTokens() + ": " + st1.nextToken());
++count;
}
System.out.println("totalCount: " + count);
-결과
5: 100
4: 200
3: 300
2: 400
1: 500
totalCount: 5
#예시2
-StringTokenizer (String str, String delim, boolean returnDelims) : str 문자열, delim 구분자, returnDelims : true 일 경우 구분자로 토큰으로 반환합니다.
// 세번째 매개변수에 따라 구분자로 포함할지 결정
String expression = "(100+200)+300*400/500=result";
StringTokenizer st2 = new StringTokenizer(expression, "+-*/=()", true);
//StringTokenizer st2 = new StringTokenizer(expression, "+-*/=()", false);
while (st2.hasMoreTokens()) {
System.out.print(st2.nextToken());
}
-결과
구분자 : +-*/=()
true : (100+200)+300*400/500=result
false : 100200300400500result
#예시3
-문자열을 다중구분으로 처리해야할때 2중 반복문으로 처리할 수 있습니다.
-첫번째 구분자 |, 두번째 구분자 ,
// 2중 반복문으로 2번 분리
String source2 =
"1,홍길동,100,200,300|2,김첨지,90,95,100|3,아메바,10,20,30";
StringTokenizer st3 = new StringTokenizer(source2, "|");
while(st3.hasMoreTokens()) {
String token = st3.nextToken();
StringTokenizer st4 = new StringTokenizer(token, ",");
while(st4.hasMoreTokens()) {
System.out.print(st4.nextToken());
}
}
-결과
1
홍길동
100
200
300
2
김첨지
90
95
100
3
아메바
10
20
30
#예시4
-StringTokenizer와 Split의 차이점
-Split은 빈 문자열도 토큰으로 인식합니다.
-StringTokenizer는 빈 문자열을 토큰으로 인식하지 않습니다.
// split, StringTokenizer 차이점
String str = "hello,,java,,world";
String[] result = str.split(",");
StringTokenizer st5 = new StringTokenizer(str, ",");
for(int i=0; i < result.length; i++ ) {
System.out.print(result[i] + "|");
}
// 빈 문자열도 토큰으로 인식합니다.
System.out.println(" [split 개수: " + result.length + " ]");
int cnt = 0;
while(st5.hasMoreTokens()) {
System.out.print(st5.nextToken()+ "|");
cnt++;
}
// 빈 문자열을 토큰으로 인식하지 않습니다.
System.out.println(" [StringTokenizer 개수: " + cnt + " ]");
-결과
hello||java||world| [split 개수: 5 ]
hello|java|world| [StringTokenizer 개수: 3 ]
728x90
반응형
'IT > Java' 카테고리의 다른 글
[Java] - 자바 SimpleDateFormat 클래스를 사용해서 날짜 형식에 맞게 출력하는 방법(Date, Calendar) (0) | 2022.11.02 |
---|---|
[Java] - 자바 BigInteger, BigDecimal 클래스 사용방법 (0) | 2022.10.18 |
[Java] - 이클립스(Eclipse)나 STS에서 디버그 안될 때 해결 방법 [브레이크 포인트(break point 사선)] (0) | 2022.10.11 |
[Java] - 자바 제어문(조건문/반복문)에서 continue, break, return 사용시 차이점 (0) | 2022.07.04 |
[Java] - 자바 Map 데이터 가져오는 방법(entrySet(), keySet(), Iterator 인터페이스) (0) | 2022.07.01 |
댓글