Split | StringTokenizer |
- 같은 타입을 하나 하나로 분리할 때 유용 | - 다른 타입을 묶어서 분리할 때 유용 |
[예제 코드]
public class tokenStudy1 {
//split은 하나하나를 분리하고, 확인할 때 많이 사용한다. --> ex) 민지, 해린, 혜인, 하니, 다니엘
//StudyTokenizer은 묶음으로 분리할 때 많이 사용한다 --> ex) 민지 21살 해린 19살 혜인 17살 하니 21살 다니엘 20살
public static void main(String[] args) {
String name = "민지,해린,혜인,하니,다니엘";
//Split 사용시 --> 같은 타입에 유용
String [] names = name.split(",");
for(int i=0; i<names.length;i++) {
System.out.println((i+1) + "번째 이름 : " + names[i]);
}
String nameAge = "민지, 21, 해린, 19, 혜인, 17, 하니, 21, 다니엘, 20";
//StringTokenizer 사용시 --> 클래스 하나로 봤을 떄 유용
//StringTokenizer은 객체임을 명시
StringTokenizer na = new StringTokenizer(nameAge, ","); //어떤 것을 어떤 기준으로 자를것이다.
//얼마큼 몇개가 있는지 불확실하기 떄문에 for문이 아닌 while을 많이 사용
//hasMoreToken을 이용해서 내가 찾는 ","까지 다가가서 자른다.
//다만 하니,에서 자르고 다니엘 --> 마지막으로 다가가는 과정에서 ,이 없어도 마지막을 만나면 잘라진다고 생각
while(na.hasMoreTokens()) {
String nName = na.nextToken().trim();
int nAge = Integer.parseInt(na.nextToken().trim()); //nextToken은 String type만 담을 수 있음
//따라서 int 타입에 담기위해 Integer 사용 --> 자동 오토 언박싱이 되기 떄문에 가능
System.out.println("이름 : " + nName);
System.out.println("나이 : " + nAge);
System.out.println("============");
}
//여기서 주의할 점은 공백제거이다.
//공백제거를 하지 않을시 나이를 추출할 때 " " : 화이트스페이스 때문에 문자로 인식하여 변환이 어려울 수 있기 때문.
}
}
유의할 점은 .trim()을 통해 공백을 제거하지 않으면,
문자를 숫자로 변환하거나 다른 타입으로 변환하는 과정에서 오류를 범할 수 있음
따라서 공백을 제거하는 것이 중요!
728x90
'용어 > java' 카테고리의 다른 글
[국비][JAVA] list 이해하기 (2) | 2024.06.08 |
---|---|
[국비][JAVA] 컬렉션 프레임웍의 큰 틀 이해하기 (2) | 2024.06.08 |
[국비][JAVA] 오토박싱과 언박싱 (0) | 2024.06.04 |
[국비][JAVA] 인터페이스와 추상(abstract) 차이 (0) | 2024.06.02 |
[국비][JAVA] 메서드 오버로딩, 오버라이딩 차이 (0) | 2024.05.30 |