Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[3주차] 62. 구분자를 기준으로 하는 문자열 파싱 방법(StringTokenizer 클래스, String 클래스)*** 본문

K-DigitalTraining 강의/1. Java

[3주차] 62. 구분자를 기준으로 하는 문자열 파싱 방법(StringTokenizer 클래스, String 클래스)***

이대곤 2022. 6. 2. 12:21

* 문자열 파싱이란?

  구분자를 기준으로 단어 단어 쪼개는걸 파싱이라고 하는데, 이렇게 분리된 단어를 각각의 토큰이라고 한다. 

  이걸 간단히 수행하기 위한 방법으로는 크게 2 가지 방식이 있음.

  방법1) String 클래스의 split() 메소드를 이용하는 것 -> 구분자를 1개만 지정가능 

  방법2)  StringTokenizer 클래스를 이용하는 것 -> 구분자를 여러개 지정가능

  방법3) String 클래스의 indexOf() 메소드로 구분할 index를 찾고 substring() 메소드로 나눠서 가져오는 것 -> 완전수동

1. String 클래스의 split 메소드 사용예시 코드

import java.util.StringTokenizer;

public class Ex08_07_StringTokenizer {
	public static void main(String[] args) {
		// 구분자를 한개만 사용 할 수 있는 String의 split 메소드
		String s = "2022/05 31,10:43";
		String[] s_arr = s.split("/");
		System.out.println("토큰의 개수: " +s_arr.length);
		
		for(String str : s_arr) {
			System.out.println("s:"+str);
		}
	}
}

실행결과

토큰의 개수: 2
s:2022
s:05 31,10:43

2. StringTokenizer 클래스 사용예시 코드

import java.util.StringTokenizer;

public class Ex08_07_StringTokenizer {
	public static void main(String[] args) {
		
		// 구분자를 지정해주지 않은 경우 -> " " 공백을 구분자로 자동 지정하여 동작함
		StringTokenizer stn1 = new StringTokenizer("2022/05/31, 10:43");
		System.out.println("토큰의 개수: " + stn1.countTokens());

		while (stn1.hasMoreTokens()) {
			String s = stn1.nextToken();
			System.out.println("s:" + s);
		}
		System.out.println();

		
		// 구분자로 '/' 만을 사용한 경우
		StringTokenizer stn2 = new StringTokenizer("2022/05/31, 10:43", "/");
		System.out.println("토큰의 개수: " + stn2.countTokens());

		while (stn2.hasMoreTokens()) {
			String s = stn2.nextToken();
			System.out.println("s:" + s);
		}
		System.out.println();

		
		// 구분자로 "," "/" 두가지를 동시에 지정한 경우
		StringTokenizer stn3 = new StringTokenizer("2022/05/31, 10:43", ",/");
		System.out.println("토큰의 개수: " + stn3.countTokens());
		while (stn3.hasMoreTokens()) { // StringTokenizer의 hasMoreTokens()는 boolean 을 리턴
			String s = stn3.nextToken();
			System.out.println("s:" + s);
		}
		System.out.println();
	}
}

실행결과

토큰의 개수: 2
s:2022/05/31,
s:10:43

토큰의 개수: 3
s:2022
s:05
s:31, 10:43

토큰의 개수: 4
s:2022
s:05
s:31
s: 10:43

 

Comments