코로나 요양중이라 출근을 못했다. 열때문에 머리가 아파서 도저히 코딩은 못하겠어서 코테 준비하다가 본 클래스에 대해 간단히 정리해두려한다.
문자열을 인덱스 기준으로 자르는 메서드.
indexOf()를 사용해 시작 위치를 찾고 거기서 자르면 된다.
String input = "Hello, World!";
int index = input.indexOf("World");
String result = input.substring(index); // result = "World!"
문자열을 특정 구분자를 기준으로 분할하는 방법
인자에 정규식을 넣어 거기에 맞춰서 파싱도 가능하다.
String input2 = "korea,japan,china";
String[] nations = input2.split(",");
단 . 과 같은 메타문자는 \\
을 앞에 넣어 \\.
라고 써야한다.
구분결과 빈 문자열이 있다면 그것도 하나의 문자열로 인식한다.
반환 결과가 String 배열이다.
말그대로 String을 Token화 하는 클래스
하나의 문자열을 여러개의 토큰으로 분리한다.
import java.util.StringTokenizer;
// 1. 띄어쓰기 기준으로 분리
StringTokenizer st1 = new StringTokenizer("문자열");
// 2. 구분자를 기준으로 분리
StringTokenizer st2 = new StringTokenizer("문자열", "구분자");
// 3. true면 구분자도 토큰에 포함 / false면 구분자는 미포함(디폴트)
StringTokenizer st3 = new StringTokenizer("문자열", "구분자", true/false);
반환타입 | 메서드명 | 설명 |
---|---|---|
int | countTokens() | 총 토큰 개수 반환 |
boolean | hasMoreElements() | 아래 메서드와 동일 |
boolean | hasMoreTokens() | 남은 토큰이 있으면 true 반환 |
Object | nextElement() | 아래 메서드와 동일하지만 반환 타입만 Object |
String | nextToken() | 다음 토큰을 반환 |
String | nextToken(String delim) | 특정 delim에 따라 다음 토큰 반환 |
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
String str = "동해물과 백두산이 마르고 닳도록";
StringTokenizer st = new StringTokenizer(str);
// 반복문으로 하나씩 토큰 꺼내 출력
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
/* 출력 :
동해물과
백두산이
마르고
닳도록
*/
}
}
}
st는 java.util안의 클래스, sp는 String 클래스 안의 메서드
st는 문자/문자열로 구분하고 sp은 정규식으로 구분.
st는 빈 문자열을 토큰으로 인식 x. sp는 빈 문자열도 인식
st는 리턴값이 String, sp는 String[] 배열
배열에 담아 반환하는 sp보다 문자열을 바로 잘라주는 st가 다소 속도가 빠르지만 데이터가 많으면 큰 의미는 없다.