티스토리 뷰
[JAVA] 자바 - 구분자를 통해 문자열 나누기 (StringTokenizer 알아보기)
Lkt_Programmer 2019. 5. 3. 20:42StringTokenizer 클래스는 특정 문자열을 구분자를 통해 잘라서 관리할 수 있는 클래스입니다. 구분자를 통해 잘려진 문자를 토큰(Token)이라 부르며 이를 통해 다양한 작업을 처리할 수 있습니다.
1. 생성자 (Constructor)
StringTokenizer(String str) |
나누고자 하는 문자열을 인자로 가지는 생성자 |
StringTokenizer(String str, String delimeter) |
나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimeter)를 인자로 가지는 생성자 |
StringTokenizer(String str, String delimeter, boolean return delime |
나누고자하는 문자열과 문자열을 나눌 때 사용 할 구분자(Delimeter) 그리고 구분자를 토큰(Token)에 포함할지를 설정하는 인자를 넘겨주는 생성자입니다. |
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
//인자 1개를 가지는 생성자를 통해 객체 생성
StringTokenizer sample = new StringTokenizer("Hello/Java/World/!!");
//인자 2개를 가지는 생성자를 통해 객체 생성
StringTokenizer sample2 = new StringTokenizer("Hello/Java/World/!!", "/");
// true : 구분자를 토큰에 포함함
StringTokenizer sample3 = new StringTokenizer("Hello/Java/World/!!", "/", true);
// false : 구분자를 토큰에 포함하지 않음
StringTokenizer sample4 = new StringTokenizer("Hello/Java/World/!!", "/", false);
System.out.println("************************************");
System.out.println("구분자를 토큰으로 포함");
while(sample3.hasMoreTokens())
{
System.out.println(sample3.nextToken());
}
System.out.println("************************************");
System.out.println("구분자를 토큰으로 포함하지 않음");
while(sample4.hasMoreTokens())
{
System.out.println(sample4.nextToken());
}
}
}
▼ sample1 과 sample2 객체를 생성하는 생성자 함수는 직관적으로 이해가 될 것입니다. sample3 객체와 sample4 객체의 경우는 세 번째 인자 정보가 더 추가되었는데 위 표에서 설명 한대로 구분자를 토큰(Token)에 포함할지 말지를 설정하는 인자입니다. 즉 sample3 객체를 예로 해당 인자값으로 true로 넘겨주는 것은 두 번쨰 인자값으로 넘겨준 "/" 구분자도 토큰으로 포함하겠다는 의미입니다. 결과를 보여드리기 위해 sample3 객체와 sample4의 의해서 생성된 토큰을 출력하는 구문을 추가하였습니다.
▼ 구분자를 토큰으로 포함하는 sample3 객체의 경우는 "/" 구분자까지 포함하여 6개의 토큰이 생성됩니다. 반면 구분자를 토큰으로 포함하지 않는 sample4 객체는 "/" 구분자를 제외한 4개의 토큰이 생성되는 것을 확인할 수 있습니다.
2. StringTokenizer 클래스의 Method
구분자를 통해 문자열을 나누었다면 각각의 문자형 데이터에 접근할 수 없다면 소용이 없을 겁니다. StringTokenizer 클래스는 나누어진 토큰을 제어하기 위한 여러 가지 Method를 제공합니다.
Method | 설명 |
int countTokens(); | 구분자를 통해 생성되는 토큰(Token)에 개수 |
boolean hasMoreElements | 토큰(Token)이 남아있는지를 판단 |
boolean hasMoreTokens | 토큰(Token)이 남아있는지를 판단 |
Object nextElement() | nextToken()과 동일하지만 반환형이 Object |
String nextToken() | 다음 토큰(Token)에 해당하는 문자열 반환 |
String nextToken(String delimeter) | 구분자에 의해 나누어진 다음 토큰(Token)에 해당하는 문자열 반환 |
import java.util.*;
public class Sample
{
public static void main(String[] args)
{
StringTokenizer sample = new StringTokenizer("Hello/Java/World/!!", "/", false);
System.out.println("생성된 토큰 수 : " + sample.countTokens());
while(sample.hasMoreTokens())
{
System.out.println(sample.nextToken());
}
}
}
▼ "Hello/Java/World/!!" 문자열을 "/" 구분자를 통해 나눈 토큰을 생성하도록 하였습니다. 각 토큰에 접근하기 위해서는 while() 구문을 사용하였고 hasMoreToken() 메소드를 통해 접근할 수 있는 토큰이 남아있는지를 체크하도록 합니다. nextToken() 메소드를 통해 문자형 데이터를 출력합니다.
'Programming > JAVA' 카테고리의 다른 글
[Java] 자바 - 제네릭(Generic) (0) | 2019.06.16 |
---|---|
[Java] 자바 - ArrayList 정렬하기 (Comparable / Comparator) (0) | 2019.06.15 |
[JAVA] 자바 - Math 클래스 (수학 관련 처리 클래스) (3) | 2019.04.10 |
[JAVA] 자바 - ArrayList 자료구조 활용하기 (4) | 2019.04.09 |
[JAVA] 자바 - 공백 문자 제거하기 (trim, replaceAll) (0) | 2019.04.08 |