전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

JAVA

[자바/JAVA] 프로그래밍 - API_String (3) StringTokenizer

2023. 6. 14. 15:31

구분자를 기준으로 해서 문자열을 분리시키는 방법

 

방법 1. 분리된 문자열들을 String[] 배열에 차곡차곡 담고자 할 때

String 클래스에서 제공하는 split 메소드 이용
문자열.split(구분자) : String[]

String str = "Java,Oracle,JDBC,HTML,CSS,Spring";

String[] arr = str.split(",");
System.out.println("arr 배열의 길이 : " + arr.length);

/*
for(int i = 0; i < arr.length; i++) {
    System.out.println(i + "번째 인덱스 : " + arr[i]);
}
*/

int count = 0;
for(String a : arr) {	// a = arr[0], a = arr[1]...
    System.out.println(count + "번째 인덱스 : " + a);
    count++;
}

실행 결과


방법 2. 분리된 문자열들을 각각 토큰으로써 관리하고자 할 때

java.util.StringTokenizer 클래스를 이용하는 방법
StringTokenizer stn = new StringTokenizer(분리시키고자 하는 문자열, 구분자);

String str = "Java,Oracle,JDBC,HTML,CSS,Spring";

StringTokenizer stn = new StringTokenizer(str, ",");

System.out.println("분리된 문자열의 개수 : " + stn.countTokens());
System.out.println(stn.nextToken());
System.out.println(stn.nextToken());
System.out.println(stn.nextToken());
System.out.println(stn.nextToken());
System.out.println(stn.nextToken());
System.out.println(stn.nextToken());

System.out.println(stn.countTokens()); // 다 뽑으면 끝남.. 일회성 --> 토큰갯수가 0으로 나옴

// System.out.println(stn.nextToken());	// NoSuchElementException : 더 이상 요소가 없다...

 

반복문을 이용해서 출력한다면  ?

String str = "Java,Oracle,JDBC,HTML,CSS,Spring";

StringTokenizer stn = new StringTokenizer(str, ",");

for(int i = 0; i < stn.countTokens(); i++) {
    System.out.println(stn.nextToken());
}

뭔가 잘 나오다가 만다. 그 이유는 출력할때마다 토큰의 갯수가 줄기 때문에 stn.countTokens() 의 값이 1씩 떨어진다.

i = 0 i < 6 true 출력("JAVA") i++
i = 1 i < 5 true 출력("Oracle") i++
i = 2 i < 4 true 출력("JDBC") i++
i = 3 i < 3 false 출력 안됨


해결방법 1.

String str = "Java,Oracle,JDBC,HTML,CSS,Spring";

StringTokenizer stn = new StringTokenizer(str, ",");

int count1 = stn.countTokens();	// 6
for(int i = 0; i < count1; i++) {	// count를 사용하여 값을 고정시키기
    System.out.println(stn.nextToken());
}

 

해결방법 2.

String str = "Java,Oracle,JDBC,HTML,CSS,Spring";

StringTokenizer stn = new StringTokenizer(str, ",");

while(stn.hasMoreTokens()) {	// 반복 수행될 조건 : 토큰이 남아있을때만 출력
    System.out.println(stn.nextToken());
}

 

실행 결과

 

    'JAVA' 카테고리의 다른 글
    • [자바/JAVA] 프로그래밍 - API_Date
    • [자바/JAVA] 프로그래밍 - API_Wrapper
    • [자바/JAVA] 프로그래밍 - API_String (2) String Method
    • [자바/JAVA] 프로그래밍 - API_String (1) String Pool
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바