본문 바로가기
java&eclipse 코딩 알고리즘/20231214

StringTokenizerTest

by 몽상크리에이터 2023. 12. 14.

package com.tjoeun.textfileIO;

 

import java.text.DecimalFormat;

import java.util.Arrays;

import java.util.StringTokenizer;

 

public class StringTokenizerTest {

 

public static void main(String[] args) {

 

// String str = "010-123-4567";

//// split() 메소드는 인수로 지정된 구분자로 문자열을 분리해서 배열로 리턴한다.

// String[] phoneNo = str.split("-");

// System.out.println(Arrays.toString(phoneNo));

//

//// split() 메소드는 구분자를 2개 이상 지정할 수 없으므로 공백과 탭이 섞여있는

//// 데이터에 구분자를 공백만 지정하면 탭으로 구분된 데이터는 분리할 수 없다.

// str = "사과 배 복숭아 밤 대추";

// String[] data = str.split(" ");

// System.out.println(Arrays.toString(data));

 

// StringTokenizer 클래스는 사용자가 지정하는 구분자를 경계로 문자열을 분리한다.

// 구분자를 생략하면 공백과 탭을 기본 구분자로 사용하며, 구분자로 분리된 데이터를 token이라 한다.

 

// 문자열이 공백이나 탭으로 구분된 경우

String str1 = "사과 배 복숭아 밤 대추";

StringTokenizer st1 = new StringTokenizer(str1);

// hasMoreTokens() 메소드는 StringTokenizer 클래스 객체에 다음에 읽을 token이 있으면 true,

// 없으면 false를 리턴한다.

while (st1.hasMoreTokens()) { // 다음에 읽을 데이터(token)가 있는 동안 반복된다.

// nextToken() 메소드는 StringTokenizer 클래스 객체의 다음 token을 읽어들인다.

System.out.println(st1.nextToken());

}

System.out.println("=====================================");

 

// 문자열이 ","로 구분된 경우

String str2 = "사과,배,복숭아,밤,대추";

// StringTokenizer 클래스 생성자의 2번째 인수로 구분자를 지정할 수 있다.

StringTokenizer st2 = new StringTokenizer(str2, ",");

while (st2.hasMoreTokens()) {

System.out.println(st2.nextToken());

}

System.out.println("=====================================");

 

// 문자열이 ","와 "."로 구분된 경우

String str3 = "사과,배,복숭아.밤,대추";

// StringTokenizer 클래스 생성자의 2번째 인수로 구분자를 여러개 지정할 수 있다.

StringTokenizer st3 = new StringTokenizer(str2, ",.");

while (st3.hasMoreTokens()) {

System.out.println(st3.nextToken());

}

System.out.println("=====================================");

 

// 문자열이 "="와 ","로 구분된 경우

String str4 = "사과=1000,배=2000,복숭아=3000,밤=4000,대추=5000";

// StringTokenizer 클래스 생성자의 3번째 인수로 구분자를 token에 포함시키는 여부를 지정할 수 있다.

// 3번째 인수는 생략시 false가 기본값으로 구분자를 token에 포함시키지 않지만 true를 쓰면 구분자를

// token에 포함시킨다.

StringTokenizer st4 = new StringTokenizer(str4, ",=", true);

while (st4.hasMoreTokens()) {

System.out.println(st4.nextToken());

}

System.out.println("=====================================");

 

 

// 챌린지 과제!

String str5 = "사과=1000,배=2000,복숭아=3000,밤=4000,대추=5000,감=6000";

// str5를 가지고 사과(1,000원) 처럼 나오게 서식 설정해 보기

 

StringTokenizer st5 = new StringTokenizer(str5, ",=", true); // ","와 "="를 경계로 토큰설정

DecimalFormat df = new DecimalFormat("#,##0원"); // 숫자 서식

 

while (st5.hasMoreTokens()) { // st5에 토큰이 존재하는 동안 반복

String str = st5.nextToken(); // 토큰이

if (str.equals("=")) { // "="과 같다면

System.out.print("("); // "("를 출력하고

} else if (str.equals(",")) { // 그렇지 않고 ","와 같다면

System.out.println(")"); // ")"를 출력하고

} else { // 그렇지 않으면

try {

System.out.print(df.format(Integer.parseInt(str))); //토큰을 인수로 변환해서 숫자서식을 지정해서 출력한다

} catch (Exception e) { // 예외(인수로 변환할 수 없는 토큰(사과 배 복숭아 등등)가 존재)가 발생하면

System.out.print(str); // 문자열로 출력한다.

}

}

}

System.out.println(")");

}

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'java&eclipse 코딩 알고리즘 > 20231214' 카테고리의 다른 글

MemoList  (0) 2023.12.14
MemoVO  (0) 2023.12.14
TextFileReadTest2  (0) 2023.12.14
TextFileReadTest  (0) 2023.12.14
TextFileWriteTest  (0) 2023.12.14