Java 관련/Java

[Java] Split() & StringTokenizer()

씨네 2021. 10. 30. 10:05
728x90


우선 Spilt과 StringTokenizer의 차이점부터 보면 StringTokenizer의 경우 비어있는 데이터는 생략하고 Split은 비어있는 데이터를 null 값으로 간주한다고 합니다.

또한 StringTokenizer는 일반적으로 속도가 더 빠르며 Split은 정교한 작업을 하는데 더 유용하다고 합니다.

두 가지를 보기 전에 먼저 substring을 보겠습니다.

1.substring

String str = "The String class represents character strings.";

str의 문자열이 선언되어 있다고 가정했을 때

System.out.println(str.substring(4, 10));

substring은 java.lang.String에서 제공하고 있는데요.

위의 코드를 출력하면 String이 출력이 됩니다.

해당 문자열을 배열로 봤을 때 4번째 방부터 10번째 방까지 출력해달라는 의미입니다.


2.split

String[] temp = str.split(" ");
for(int i = 0; i < temp.length; i++) {
  System.out.println(temp[i]);
}

Split도 java.lang.String에서 제공하고 있습니다.

String[] temp = str.split(" ");

해당 명령문은 String 타입의 배열에 담고 " "을 기준으로 구분할 예정입니다.

for(int i = 0; i < temp.length; i++) {
  System.out.println(temp[i]);
}

" "을 고분자로 구분하여 문자열을 나누어 배열에 담고 해당 배열을 출력합니다.

space bar를 기준으로 구분하여 배열에 담았기 때문에 위의 콘솔 창 같은 결과가 나왔겠지요.


3. StringTokenizer

String str02 = "The,String,class,represents,character,strings.";

StringTokenizer st = new StringTokenizer(str02, ",");

while(st.hasMoreTokens()) {
  System.out.println(st.nextToken());
}

StringTokenizer를 이용해서 문자열을 구분해보겠습니다.

문자열을 토큰처럼 나눈다는 의미입니다.

StringTokenizer st = new StringTokenizer(str02, ",");

객체를 생성하며 ","를 고분자로 하여 문자열을 구분합니다.

while(st.hasMoreTokens()) {
  System.out.println(st.nextToken());
}

구분된 토큰이 있을 경우 while 문이 반복됩니다.

반복문이 반복되면서 st에 저장된 토큰을 출력합니다.

String str03 = "The String,class/represents#character~strings.";

StringTokenizer st02 = new StringTokenizer(str03, " ,/#~");

while(st02.hasMoreTokens()) {
  System.out.println(st02.nextToken());
}

위 코드처럼 구분자를 여러 개 설정할 수 있습니다.

728x90