본문 바로가기

기술면접대비

[JAVA] StringTokenizer와 String split() 차이

Java에서 문자열을 원하는 구분자를 사용하여 분리하는 방법으로 StringTokenizerString의 메소드 split()를 사용한다.

 

StringTokenizer

- java.util에 포함되어있는 메소드

- 지정한 한가지 구분자로 문자열을 나눌 수 있다

- 구분자를 생략하면 공백이 기본 구분자

 

split()

- String 클래스의 메소드로 지정한 구분자로 문자열을 나눠 배열에 저장

- 공백 문자열도 포함

 

StringTokenizer와 String.split()의 차이

 - String.split()은 정규식을 사용하기 때문에 StringTokenizer가 속도 측면에서 성능이 좋다.

 - 가변적인 요소가 많은 문자열이나 정확한 분리가 필요할 땐 split() 사용이 유용

   => split()은 다양하게 쪼갤수 있지만 StringTokenizer는 단순한 문자로만 쪼갤 수 있다

정규 표현식이란? 
특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어

 

 

StringTokenizer 사용법

 StringTokenizer 메소드

- nextToken() : 다음 토큰을 리턴한다. 이전토큰은 제거 

메소드 설명 리턴타입
nextToken() 다음 토큰을 리턴한다
이전 토큰은 제거
String
hasMoreTokens() 리턴할 다음 토큰이 남아있으면 true
리턴할 다음 토큰이 없으면 false
boolean
countTokens() 남아있는 토큰의 개수를 리턴 int

 

 

 

 

String.split() 사용법

 

 

예시코드

package 개념;

import java.util.Arrays;
import java.util.StringTokenizer;

public class StringTokenizerStirngsplit {

	public static void main(String[] args) {
		String str = "kistone:and:kitty";
		StringTokenizer st = new StringTokenizer(str,":");
		System.out.println("StringToeknizer 예시 1");
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
		
		System.out.println("\nsplit() 예시 1");
		String[] sp = str.split(":");
		System.out.println(Arrays.toString(sp));
		
		System.out.println("\nsplit() 예시 2 : 원하는 길이 까지만 쪼개기");
		String str2 = "1/2/3/4/5";
		String[] sp2 = str2.split("/",3);
		System.out.println(Arrays.toString(sp2));

		
		
		System.out.println("\nsplit() 예시 3 : 끝의 구분자는 인식하지 않는다  앞과 중간 구분자는 인식");
		String str3 = "/1/2/3/4/5/";
		String[] sp3 = str3.split("/");
		System.out.println(Arrays.toString(sp3));

		System.out.println("\nsplit() 예시 4 : 음수가 들어가면 앞뒤 상관없이 그냥 /을 구분자로 다 쪼갠다");
		String str4 = "/1/2/3/4/5/";
		String[] sp4 = str4.split("/",-1);
		System.out.println(Arrays.toString(sp4));
	}
}
/**
 * 출력
StringToeknizer 예시 1
kistone
and
kitty

split() 예시 1
[kistone, and, kitty]

split() 예시 2 : 원하는 길이 까지만 쪼개기
[1, 2, 3/4/5]

split() 예시 3 : 끝의 구분자는 인식하지 않는다  앞과 중간 구분자는 인식
[, 1, 2, 3, 4, 5]

split() 예시 4 : 음수가 들어가면 앞뒤 상관없이 그냥 /을 구분자로 다 쪼갠다
[, 1, 2, 3, 4, 5, ]
*/


 

 

 

 

 

 

참고자료

 https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
 https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html
 https://docs.oracle.com/javase/8/docs/api/java/lang/String.html