구분자를 기준으로 해서 문자열을 분리시키는 방법
방법 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());
}
실행 결과