Seung's Learning Record

[ JAVA ] StringTokenizer()를 사용한 문자열 분리 본문

프로그래밍/JAVA

[ JAVA ] StringTokenizer()를 사용한 문자열 분리

70_0ewd 2022. 8. 21. 01:08

BufferedReader()에 익숙해지기 위해 여러 입출력 문제를 풀던 중 만난 StringTokenizer(). 

뭔지 정확히 모르지만 일단 사용하고 문제를 푼 뒤, 위 클래스에 대해 공부해보았다.


StringTokenizer()

BufferedReader()를 사용하여 입력을 읽어들이면 라인 단위로 읽어들일 수 밖에 없다. 이때 필요한것이 바로 문자열을 분리시켜주는 StringTokenizer인 것이다. 이 클래스를 사용하여 특정 문자에 따라 문자열을 나눌 수 있다. 

StringTokenizer를 생성하는 방식에는 3가지가 있다.

  • StringTokenizer st = new StringTokenizer(문자열);        <띄어쓰기 기준으로 분리>
  • StringTokenizer st = new StringTokenizer(문자열,구분자);        <구분자를 기준으로 분리>
  • StringTokenizer st = new StringTokenizer(문자열,구분자,true/false);        <구분자도 토큰으로 넣을지(t) 말지(f) 결정>

 StringTokenizer 클래스에서 지원하는 메서드 중 가장 자주 사용하는 메서드를 사용한 예시 코드이다.

<문자열 분리>

import java.util.StringTokenizer;
public class ST{
	public static void main(String[] args) throws IOException {
    	String str = "티스토리 주소 :seung2344.tistory.com";
        StringTokenizer st = new StringTokenizer(str, ":." , true);		//구분자 1개이상 가능
           
        while(st.hasMoreTokens()){
        	System.out.println(st.nextToken());                  
        	System.out.println("total tokens : "+st.countTokens());
        }
 }
 
/*
 티스토리 주소 
total tokens : 6
:
total tokens : 5
seung2344
total tokens : 4
.
total tokens : 3
tistory
total tokens : 2
.
total tokens : 1
com
total tokens : 0
*/

<BufferedReader()를 사용한 배열 입력>

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

public class ST{
	public static void main(String[] args) throw IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int[] arr = new int[10];
        for(int i=0 ; i<arr.length ; i++){
        	arr[i] = Integer.parseInt(st.nextToken());
            //bufferedreader는 엔터를 기준으로 문자열을 입력받기때문에 StringTokenizer를 사용하여
            //공백을 기준으로 문자열을 나눠 입력시킨다.
        }
        for(int j=0 ; j<arr.length ; j++){
        	bw.write(String.valueOf(arr[j]));
            //BufferedWriter을 통해 정수 출력을 할려면 String으로 형변환을 해줘야 한다.
            bw.write(" ");		//공백 출력
            bw.flush();
  	 	}
    	bw.newLine();
    	bw.write("끝");
    	bw.flush();
    	bw.close();   
     }
}
/*
1 2 3 4 5 6 7 8 9 10 
끝
*/

'프로그래밍 > JAVA' 카테고리의 다른 글

[ JAVA ] StringBuilder - 문자열 더하기  (0) 2022.08.25
[ JAVA ] 배열 정렬  (0) 2022.08.18
[ JAVA ] 배열  (0) 2022.08.18
[ JAVA ] 표준 입출력  (0) 2022.08.16