유용한 클래스(5) - StringTokenizer class

2021. 12. 31. 10:00·자바/유용한 클래스들

1. java.util.StringTokenizer class

- 이 클래스는 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰이라는 여러 개의 문자열로

잘라내는 데 사용된다.

 

- StringTokenizer는 구분자로 단 하나의 문자 밖에 사용하지 못하기 때문에 보다 복잡한 형태의 구분자로

문자열을 나누어야 할 때는 어쩔 수 없이 정규식 표현(Scanner 또는 split)를 사용해야 할 것이다.

 

 

- StringTokenizer 클래스의 생성자와 메서드는 아래와 같다.

(1) StringTokenizer(String str, String delim)

: str 문자열을 지정된 구분자 delim으로 나누는 StringTokenizer를 생성한다.

 

(2) StringTokenizer(String str, String delim, boolean returnDelims)

: returnDelims의 값을 true로 하면 구분자도 토큰으로 간주된다.

 

(3) int countTokens()

: 전체의 토큰의 수를 반환한다.

 

(4) boolean hasMoreTokens()

: 토큰이 남아있는지 알려준다.

 

(5) String nextToken()

: 다음 토큰을 반환한다.

 

 

 

 

1-1. StringTokenizer class를 이해하기 위한 예제(1)

: hasMoreTokens()와 nextToken()을 사용하는 예제이다.

 

 

 

 

 

1-2. StringTokenizer class를 이해하기 위한 예제(2)

: StringTokenizer의 생성자 boolean을 사용하는 예제이다.

 

( boolean 매개변수에게 인자값 true 주니, 구분자 또한 토큰이 되었다. )

 

 

 

 

1-3. StringTokenizer class를 이해하기 위한 예제(3)

: StringTokenizer를 2번 사용하는 예제이다.

 

 

 

 

 

1-4. StringTokenizer class를 이해하기 위한 예제(4)

: StringTokenizer를 이용하여 한글로 된 숫자를 아라비아 숫자로 바꾸는 예제이다.

 

public class Exercise001 {
	
	public static void main(String[] args) throws FileNotFoundException{
		String input = "삼천삼백삼십삼억삼천오백칠십오만오천오백오십오";
		System.out.println("현재: " + input);
		System.out.println(hangulToNum(input));
	}
	
	public static long hangulToNum(String input) {
		long result = 0;
		long tmpReuslt = 0;
		long n = 0;
		
		final String NUMBER = "영일이삼사오육칠팔구";
			final String UNIT = "십백천만억조";
			final long[] UNIT_NUM = {10,100,1000,10000,(long)1e8,(long)1e12};
		
		StringTokenizer st = new StringTokenizer(input, UNIT, true);
		
		while(st.hasMoreTokens()) {
			String token = st.nextToken();
			int check = NUMBER.indexOf(token);
			
			if(check == -1) {
				if("만억조".indexOf(token) == -1) {
					tmpReuslt += (n==0 ? 1 : n) * UNIT_NUM[UNIT.indexOf(token)];
				}else {
					tmpReuslt += n;
					result += (tmpReuslt==0 ? n : tmpReuslt+n) * UNIT_NUM[UNIT.indexOf(token)];
					tmpReuslt=0;
				}
				n=0;
			}else {
				n = check;
			}
		}
		result += tmpReuslt + n;
		
		return result;
	}
}

( 이러한 문제들은 종이에 쓰면서 순서도를 그린 후, 코드를 짠다면 매우 쉬울 것이다. )

 

 

 

 

1-5. StringTokenizer class를 이해하기 위한 예제(5)

: StringTokenizer과 split() 사용의 차이를 보여주는 예제이다.

 

( 출력 결과에서도 알 수 있듯이, split() 메서드는 빈 문자열까지 토큰으로 인식하는 반면 StringTokenizer는 빈 문자열을 인식하지 않는다. )

 

( 또한 split()은 배열을 반환하기 때문에 성능면에서는 StringTokenizer보다 떨어질 수밖에 없다. )

'자바 > 유용한 클래스들' 카테고리의 다른 글

유용한 클래스(7) - BigDecimal class  (0) 2021.12.31
유용한 클래스(6) - BigInteger class  (0) 2021.12.31
유용한 클래스(4) - Scanner class  (0) 2021.12.30
유용한 클래스(3) - 정규식 - regex 패키지  (0) 2021.12.29
유용한 클래스(2) - Random class  (0) 2021.12.29
'자바/유용한 클래스들' 카테고리의 다른 글
  • 유용한 클래스(7) - BigDecimal class
  • 유용한 클래스(6) - BigInteger class
  • 유용한 클래스(4) - Scanner class
  • 유용한 클래스(3) - 정규식 - regex 패키지
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      Arrays
      알고스팟
      file
      안드로이드 스튜디오
      중간연산
      outputstream
      유용한 클래스
      선택 정렬
      문자 기반 스트림
      map()
      Collections Framework
      코드트리
      소켓 프로그래밍
      스트림
      java.time 패키지
      불안정 정렬
      java.lang패키지
      다형성
      제자리 정렬
      코딩트리조별과제
      역직렬화
      TCP 소켓 프로그래밍
      람다식
      자바 개념
      안정 정렬
      serializable
      ServerSocket
      snail
      코딩테스트
      InputStream
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    유용한 클래스(5) - StringTokenizer class
    상단으로

    티스토리툴바