문자열이 특정 구분자(delimiter)로 연결 되어 있을 경우,
구분자를 기준으로 부분 문자열을 분리 하기 위해서는 String의 split() 메소드를 이용하거나,
java.util 패키지의 StringTokenizer 클래스를 이용
split() 은 정규 표현식으로 구분, StringTokenizer는 문자로 구분
Split() 메소드
String 클래스의 split()메소드는 다음과 같이 호출
정규 표현식을 구분자로 해서 문자열을 분리한 후 , 배열에 저장하고 리턴
String[] result = "문자열".split("정규표현식");
ex) &, 쉼표(,) , -를 제외하고 따로 뽑아내고 싶을 경우
파이프(|) 기호로 연결한 정규 표현식을 매개값으로 제공
String[] names = text.split("&|,|-")
StringTokenizer 클래스
문자열의 한 종류의 구분자로 연결되어 있을 경우 StringTokenNizer 클래스를 사용하면 손쉽게 (토근: token)을 분리
StringTokenizer 객체를 생성할 때
첫번째 매개값으로 전체 문자열을 주고
두번째 매개값으로 구분자를 주면 된다.
StringTokenizer st = new StringTokenizer("문자열", "구분자")'
만약 구분자를 생략하면 공백(Space)이 기본 구분자가 된다.
예를들어 문자열이 "/"로 구분되어 있을경우
다음과 같이 StringTokenizer 객체를 생성 할 수 있다.
String text = "홍길동/이수홍/박연수";
StringTokenizer st = new StringTokenizer(text, "/");
StringTokenizer 객체가 생성되면 부분 문자열을 분리해 낼 수 있는데,
다음 메소드들을 이용해서 전체 토큰수, 남아 있는 토큰 여부를 확인한 다음, 토큰을 읽으면 된다
리턴값 | 메소드 | 설명 |
int | countTokens() | 꺼내지 않고 남아있는 토큰의 수 |
boolean | hasMoreTokens() | 남아있는 토큰이 있는지 여부 |
String | nextToken() | 토큰을 하나씩 꺼내옴 |
nextToken() 메소드로 토큰을 하나 꺼내오면 StringTokenizer 객체에는 해당 토큰이 없어진다.
StringTokenizer 객체에서 더 이상 가져올 토큰이 없다면
nextToken() 메소드는 java.util.NoSucjElementException 예외 발생
-> nextToken() 메소드를 사용하기 전에
hasMoreToekns()메소드로 꺼내올 토큰이 있는지 조사한 후 nextToken() 메소드를 호출
public class StringTokenizerExample{
public static void main(String[] args){
String text = "홍길동/이수홍/박연수";
// how 1: 전체 토큰 수를 얻어 for 문으로 루팡
StringTokenizer st = new StringTokenizer(text,"/");
int countTokens = st.counTokens();
for(int i=0; i<countTokens; i++){
String token = st.nextToken();
System.out.println(token);
}
System.out.println();
//how2 : 남아있는 토큰을 확인하고 while 문으로 루핑
st = new StringTokenizer(text, "/");
while(st.hasMoreTokens()){
String token = st.nextToken();
System.out.println(token);
}
}
}
'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글
정규 표현식과 Pattern 클래스 (0) | 2021.10.24 |
---|---|
StringBuffer, StringBuilder 클래스 (0) | 2021.10.24 |
String 클래스 (0) | 2021.10.23 |
Class 클래스 (0) | 2021.10.23 |
System 클래스 (0) | 2021.10.23 |