◆ 문자열 나누기 - StringTokenizer, split()
java.util.StringTokenizer는 문자열을 특정 구분자로 분리할 수 있는 클래스입니다. StringTokenizer 클래스를 다음과 같이 생성하고 사용할 수 있습니다. 생성자의 첫 번째 값으로 문자열을 설정하고, 두 번째 값으로 구분자를 지정합니다. 구분자를 생략하면 공백을 기준으로 분리합니다.
StringTokenizer st = new StringTokenizer("홍길동,이순신,유관순", ",");
String 클래스의 split() 메소드와 매우 비슷한 기능을 제공하는데, 다음과 같이 다소 차이가 있습니다.
구분 | 구분한 문자열 |
여러 구분자로 구분시 |
구분자가 두 문자 이상 |
공백 문자열 포함 |
|
StringTokenizer | 클래스 | 각각 토큰으로 분리 |
나열 | 불가 | 불가 |
split() | String 클래스의 메소드 |
배열로 저장 | | 로 구분 | 가능 | 가능 |
StringTokenizer의 주로 사용하는 메소드는 다음과 같습니다.
메소드명 | 설명 |
hasMoreTokens() | 남아있는 토큰이 있는지 여부를 boolean 값으로 반환 |
nextToken() | 다음 토큰을 문자열로 반환 |
countTokens() | 사용하지 않고 남아있는 토큰의 개수 반환 |
* 구분자 하나인 경우
String data = "aa/bb/cc,dd/ee/ff,gg/hh/ii";
StringTokenizer st = new StringTokenizer(data, ",");
while (st.hasMoreElements()) {
System.out.println(st.nextToken());
}
String [] arr = data.split(",");
for (String string : arr) {
System.out.println(string);
}
* 구분자 여러개인 경우
String data2 = "aa/bb/cc,dd/ee/ff,gg/hh/ii";
StringTokenizer st2 = new StringTokenizer(data2, ",/");
for (int i = 0; st2.hasMoreTokens(); i++) {
System.out.println(st2.nextToken());
}
String [] arr2 = data2.split(",|/");
for (String string : arr2) {
System.out.println(string);
}
* 공백 문자열이 중간에 존재하는 경우
String data3 = "aa,bb,,cc";
StringTokenizer st3 = new StringTokenizer(data3, ",");
while (st3.hasMoreTokens()) {
System.out.println("StringTokenizer: "+st3.nextToken());
}
String [] arr3 = data3.split(",");
for (String string : arr3) {
System.out.println("split(): "+string);
}
* 공백 문자열이 마지막에 존재하는 경우
String data4 = "aa,bb,cc,";
StringTokenizer st4 = new StringTokenizer(data4, ",");
while (st4.hasMoreTokens()) {
System.out.println("StringTokenizer: "+st4.nextToken());
}
String [] arr4 = data4.split(",", -1);
for (String string : arr4) {
System.out.println("split(): "+string);
}
* 구분자가 두 문자 이상인 경우
String data5 = "aabcbab";
StringTokenizer st5 = new StringTokenizer(data5, "ab");
while (st5.hasMoreElements()) {
System.out.println("StringTokenizer: "+st5.nextElement());
}
String [] arr5 = data5.split("ab");
for (String string : arr5) {
System.out.println("split(): "+string);
}
◆ 문자 나누기 - toCharArray()
toCharArray()는 String 클래스의 메소드로서, 문자를 한 개씩 뽑아서 문자형 배열로 저장해 줍니다.
String data6 = "hello world!";
char [] arr6 = data6.toCharArray();
System.out.println("문자개수(띄어쓰기포함): "+arr6.length);
for (char c : arr6) {
System.out.println(c);
}
◆ 활용
* 문자열로 나열된 숫자의 총합 구하기
StringTokenizer st = new StringTokenizer("9,1,5,6,3", ",");
int total = 0;
while (st.hasMoreElements()) {
total += Integer.parseInt(st.nextToken());
}
System.out.println("총합: "+total);
* 단어 개수, 문자 개수 구하기
String str = "What a lovely day";
StringTokenizer st = new StringTokenizer(str);
int wordCount = 0;
while (st.hasMoreElements()) {
System.out.print(st.nextToken()+" ");
wordCount++;
}
System.out.println("단어개수: "+wordCount);
int charCount = 0;
for (char c : str.toCharArray()) {
if (c == ' ') continue;
System.out.print(c+" ");
charCount++;
}
System.out.println("문자개수(띄어쓰기미포함): "+charCount);
'JAVA' 카테고리의 다른 글
[JAVA] Calendar, SimpleDateFormat 클래스 (0) | 2022.05.29 |
---|---|
[JAVA] Wrapper (래퍼) 클래스 (0) | 2022.05.29 |
[JAVA] StringBuffer 클래스 (StringBuilder) (0) | 2022.05.28 |
[JAVA] 상속 - 추상 클래스와 인터페이스 (0) | 2022.05.28 |
[JAVA] 상속 - 메소드 오버라이딩, 다형성 (0) | 2022.05.27 |
댓글