Just Do IT!
[Java] StringTokenizer와 Split() 메서드 본문
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
이런 식으로 구분자가 딱 하나일 경우 사용 가능하다.
728x90
'개발 공부 > Java' 카테고리의 다른 글
[Java] String을 int로, int를 String으로 변환하기 (0) | 2024.11.21 |
---|---|
[Java] TreeSet에서 custom 객체를 생성 후 ClassCastException 오류 (0) | 2024.07.24 |
[Java] StringBuilder 사용하기 (0) | 2024.07.19 |
[Java] Scanner와 BufferedReader (0) | 2024.07.11 |
[Java warning] resource leak: 'sc' is never closed 해결방법 (1) | 2024.07.08 |