[HackerRank]-Java String Tokens

열두번 째 해커랭크 문제 기초이다.

Sample Input

He is a very very good boy, isn’t he?


Sample Output

10 He
is
a

very
very
good
boy
isn
t
he


예시 설명

문자열 입력받고 모든 알파벳, 공백을 제외한 나머지를 기준으로 나누다. 나눠진 수와 나눠진것들을 출력한다.


코드

import java.io.*;
import java.util.*;

public class Solution {

    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        
        s = s.replaceAll("[^a-zA-Z]"," ");
        
        StringTokenizer tokens = new StringTokenizer(s); // 객체 선언
        System.out.println(tokens.countTokens());
        
        while(tokens.hasMoreTokens()) System.out.println(tokens.nextToken());
        
    }
}

설명

import는 따로 StringTokenizer 가 있다. 문자열 입력받고 replaceAll로 a부터z까지, A부터까지 아닌것들을 ‘^’로 표현해 공백으로 바꾼다. countTokens()로 토큰들의 갯수 출력한다. hasMoreTokens()로 다음 토큰이 있는지 여부를 알 수 있다. hasNext()처럼 말이다. nextToken()으로 다음 토큰 출력한다.

요약

countTokens()로 토큰들의 갯수 반환한다. hasMoreTokens()로 다음 토큰이 있는지 여부를 알 수 있다. nextToken()으로 다음 토큰 반환한다.