문자열이 특정 구분자로 연결되어 있을 경우에는 구분자를 기준으로 부분 문자열을 분리할 수 있다.
분리할 때에는 String의 split()메소드를 이용하거나, java.util패키지의 StringTokenizer 클래스를 이용할 수 있다.
차이점은,
spilt() : 정규표현식으로 분리
StringTokenizer : 문자로 분리
한다는 것이다.
● split()
split()메소드는 &, 쉼표(,), -를 파이프(|)기호로 연결한 정규표현식으로 매개값을 제공하면 기호들을 구분자로 부분 문자열을 추출해준다. 바로 코드로 적용해보겠다.
public class StringSplitEx {
public static void main(String[] args) {
String text = "자바&스프링,자바스크립트,SQL-ORACLE";
String[] names = text.split("&|,|-");
for(String name:names) {
System.out.println(name);
}
}
}
------결과-------
자바
스프링
자바스크립트
SQL
ORACLE
● StringTokenizer 클래스
문자열이 한 종류의 구분자로 연결되어 있을경우, StringTokenizer 클래스를 사용하면 손쉽게 문자열을 구분해낼 수 있다. StringTokenizer 객체를 생성할 대 첫 번째 매개값으로 전체 문자열을 주고, 두 번째 매개값으로 구분자를 주면 된다.
( 문자열 = token)
StringTokenizer st = new StringTokenizer("전체문자열","구분자");
만약, 구분자를 생략하면 공백(space)가 기본 구분자가 된다.
String text = "열심히/하자/개발공부";
StringTokenizer st = new StringTokenize(text,"/");
이렇게 사용하면 된다.
그리고, 다음 메소드들을 이용해서 전체토큰수, 남아있는 토큰 여부를 확인해서 다음 토큰을 읽을 수 있다.
메소드 | 설명 | |
int | countTokens() | 꺼내지 않고 남아 있는 토큰 수 |
boolean | hasMoreTokens() | 남아 있는 토큰이 있는지 여부 |
String | nextToken() | 토큰을 하나씩 꺼내옴 |
nextToken()으로 토큰을 하나씩 꺼내오면 StringTokenizer 객체에는 해당 토큰이 없어진다. 만약 더이상 가져올 토큰이 없다면 nextToken()메소드는 java.util.NoSuchElementException 예외를 발생시키기 때문에 nextToken()메소드를 사용하기 전에 hasMoreTokens() 메소드로 일단 꺼내올 토큰이 있는지부터 확인한 후 nextToken()메소드를 호출하는 것이 좋은 코딩방법이다.
자바 책에서는 StringTokenizer 로 토큰을 분리하는 예제를 두 가지로 설명하는데,
첫 번째 방법은 countTokens()메소드로 for문으로루핑하여 남아있는 토큰을 확인하는 방법,
두 번째 방법은 위에서 말한것 처럼 hasMoreTokens()메소드를 조건으로 while문을 루핑하여 남은 토큰을 확인하는 방법을 보여준다. 따로 코드는 적지 않았다.
'Language > JAVA' 카테고리의 다른 글
A1 (0) | 2024.03.18 |
---|---|
StringBuffer, StringBuilder클래스 (0) | 2023.07.07 |
API_3. String 클래스 (0) | 2023.07.06 |
API_2. java.util패키지의 Objects 클래스 (0) | 2023.07.06 |
API_1. Object 클래스와 메소드 (0) | 2023.07.06 |