용어/java

[국비][JAVA] Split과 StringTokenizer 비교

줌인. 2024. 6. 8. 12:35
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