Just Do IT!

[Java] StringTokenizer와 Split() 메서드 본문

개발 공부/Java

[Java] StringTokenizer와 Split() 메서드

MOON달 2024. 7. 19. 09:57
728x90
반응형

백준 1152번 문제를 풀다가 잘 모르겠어서 검색을 해보니,

java에 StringTokenizer 라는 것이 있었다.

StringTokenizer는 공백을 기준으로 나뉘어 토큰에 저장하기 때문에 이를 이용하는 것이었다.

그러다가 이것과 split()이 뭐가 다른지 궁금해져서 내가 알아보려고 블로그글을 작성한다.

 

 

 

 

 

 

java.util.StringTokenizer 클래스

  • 긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용한다.
  • StringTokenizer의 구분자로 단 하나의 문자 밖에 사용하지 못하기 때문에, 보다 복잡한 형태의 구분자로 문자열을 나누어야 할 때는 어쩔 수 없이 정규식을 사용하는 메서드를 사용해야 한다

StringTokenizer의 생성자와 메서드

생성자

  • StringTokenizer(String str) : 문자열을 기본 구분자(띄어쓰기)를 기준으로 나누는 StringTokenizer 생성
  • StringTokenizer(String str, String delim) : 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성
  • StringTokenizer(String str, String delim, boolean returnDelims) : 문자열(str)을 지정된 구분자(delim)로 나누는 StringTokenizer를 생성 (returnDelims의 값을 true로 하면 구분자도 토큰으로 간주)

메서드

리턴값 메서드 설명
String nextToken() 객체에서 다음 토큰을 반환
String nextToken(String delim) delim 기준으로 다음 토큰을 반환
int countTokens() 전체 토큰의 수를 반환
boolean hasMoreTokens() 토큰이 남아있는지 알려준다
boolean hasMoreTokens() hasMoreToken()과 동일한데 엘리먼트보다 토큰으로 된 메서드를 주로 사용
Object nextElement() nextToken 메서드와 동일하지만 문자열이 아닌 객체를 리턴

 

  • StringTokenizer는 단 한 문자의 구분자만 사용할 수 있기 때문에, “+-*/=()” 전체가 하나의 구분자가 아니라 각각의 문자가 모두 구분자가 된다.
  • 만일 구분자가 두 문자 이상이라면, Scanner나 String 클래스의 split을 사용해야 한다.

 

 

 

 

 

 

 

 

Split() 메서드

String 클래스에 속해 있는 메소드정규 표현식으로 구분하며, 두 문자 이상의 구분자도 사용 가능하다.결과값이 문자열 배열 String[] 이다.빈 문자열을 토큰으로 인식한다.

 

 

 

 

 

 

 

언제 StringTokenizer를 쓸까?

구분자에 유니코드 문자가 없고 구분자의 길이가 길지 않을 때 (유니코드가 있으면 속도가 느려진다)구분자가 복잡하지 않은 한 문자 일 때

 

 

 

 

 

[참고]

백준 1152번 단어의 개수 문제 풀이

https://daydream-sy.tistory.com/319

 

[백준 Bronze II] 단어의 개수 (Java)

import java.util.Scanner;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String sentence = sc.nextLine(); // 문자열 sc.close(); StringTokenizer word = new StringTokenizer

daydream-sy.tistory.com

 

이런 식으로 구분자가 딱 하나일 경우 사용 가능하다.

 

 

 

 

 

 

 

 

 

 


참고 블로그 (https://velog.io/@effirin/Java-StringTokenizer%EC%99%80-Split-%EB%A9%94%EC%84%9C%EB%93%9C-%EC%96%B8%EC%A0%9C-%EC%8D%A8%EC%95%BC%ED%95%A0%EA%B9%8C)

728x90