강잇
강이의 개발블로그
강잇
전체 방문자
오늘
어제
  • 분류 전체보기 (102)
    • Langauge (32)
      • Java-basic (29)
      • Java (3)
    • SpringBoot (7)
    • Algorithm (5)
      • BAEKJOON (5)
    • WEB (7)
      • HTML & CSS (7)
    • DB (1)
      • MySQL (1)
    • OS (17)
      • Mac (2)
      • Linux (4)
      • Terminal Command (11)
    • Computer Science (7)
      • Hard ware (1)
      • Database (1)
      • Data structure (2)
      • Algorithm (2)
      • Network (1)
    • Git (5)
      • 개념 (1)
      • 활용 (1)
      • Trouble Shooting (2)
    • ETC. (13)
      • Install (6)
      • IntelliJ (1)
      • Eclipse (2)
      • Error (3)
      • Tip (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • CSS 속성
  • 메소드
  • 알고리즘 공부
  • 메서드
  • CSS 박스 크기 설정
  • 백준
  • 자바

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
강잇

강이의 개발블로그

[Java] 문자열 문자열 배열로 변환(String to StringArray)
Langauge/Java

[Java] 문자열 문자열 배열로 변환(String to StringArray)

2022. 8. 9. 12:17

StringTokenizer 클래스를 이용하여 문자열 분리 - new StringTokenizer();

  • 문자열이 한 종류의 구분자로 구분되어 있는 경우 StringTokenizer 클래스를 이용하여 분리할 수 있다.
    • Ex. "동해물과 백두산이 마르고 닳도록" : 공백의 구분자
    • Ex. "010-1234-5678" : 하이픈(-)의 구분자
  • 분리하고자 하는 문자열을 StringTokenizer 생성자의 매개변수로 전달한다.
  • StringTokenizer 객체 안에 있는 문자열을 nextToken() 메서드를 이용하여 꺼낼 수 있다.
    • nextToken() 으로 문자열을 꺼내 온다면 Stringtokenizer 객체의 해당 문자열(토큰)은 사라진다.
  • StringTokenizer 객체에 문자열(토큰)이 없는데 꺼내려고 하면 java.util.NoSuchElementException 예외가 발생하여 프로그램이 종료되기 때문에 주의해야 한다.

코드

// 문자열이 공백으로 구분되어 있는 경우
public class Main {
    public static void main(String[] args) {
        // 구분할 문자열
        String str = new String("동해물과 백두산이 마르고 닳도록");

        // 공백을 기준으로 분리하는 경우 " " 생략 가능
        StringTokenizer st = new StringTokenizer(str, " ");

        // 분리된 문자열을 담을 문자열 배열 생성
        // countTokens() : 현재 갖고 있는 토큰(문자열)의 개수를 반환하는 메서드
        String[] strArr = new String[st.countTokens()];


        int i = 0;
        while (st.hasMoreTokens()) { // 토큰(문자열)이 존재할 경우 true 리턴
            strArr[i] = st.nextToken();
            i ++;
        }

        // 분리된 문자열 출력
        for (int j = 0; j < strArr.length; j++){
            System.out.printf("strArr[%d] : %s\n", j, strArr[j]);
        }
    }
}

출력 결과

// 공백 이외의 문자로 구분되어 있는 경우
public class Main {
    public static void main(String[] args) {
        // 구분할 문자열
        String str = new String("010-1234-5678");

        StringTokenizer st = new StringTokenizer(str, "-");

        // countTokens() : 현재 갖고 있는 토큰(문자열)의 개수를 반환하는 메서드
        int count = st.countTokens();
        
        // 분리된 문자열을 담을 문자열 배열
        String[] strArr = new String[count];

        // nextToken() 메서드를 이용하여 분리된 문자열을 하나씩 추출
        for (int i = 0; i < count; i++){
            strArr[i] = st.nextToken();
        }
        
        // 분리된 문자열 출력
        for (int i = 0; i < count; i++){
            System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
        }
    }
}

출력 결과

split() 메서드를 이용하여 문자열 분리 - String[]

  • String 기본 메서드인 split()을 이용하여 문자열을 문자열 배열로 분리할 수 있다.
  • StringTokenizer와 동일하게 구분자를 기준으로 문자열을 분리한다.
  • StringTokenizer와의 차이점
    • 리턴 타입이 String[] 타입으로 반복문 없이 바로 배열에 담을 수 있다.
    • 여러 개의 구분자로 분리할 수 있다.
  • split()
    • split(String regex) : 해당 구분자로 문자열을 분리하여 배열로 반환
    • split([String regex, String regex ... ]) : 여러 개의 구분자로 문자열을 분리하여 배열로 반환
    • split(String regex, int limit) : 해당 구분자로 문자열을 분리하여 limit 까지 배열로 반환 

코드

// 문자열이 공백으로 구분되어 있는 경우
public class Main {
    public static void main(String[] args) {
        // 구분할 문자열
        String str = new String("동해물과 백두산이 마르고 닳도록");
		
        // split() 공백의 구분자(" ")를 기준으로 분리함.
        String[] strArr = str.split(" ");
		
        // 분리된 문자열 출력
        for (int i = 0; i < strArr.length; i++) {
            System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
        }
    }
}

출력 결과

// 여러 개의 구분자로 문자열을 분리
public class Main {
    public static void main(String[] args) {
        // 구분할 문자열
        String str = new String("wonkang@tistory.com");

        String[] strArr = str.split("[@.]");

        // 분리된 문자열 출력
        for (int i = 0; i < strArr.length; i++) {
            System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
        }
    }
}

출력 결과

// 문자열을 limit까지 분리
public class Main {
    public static void main(String[] args) {
        // 구분할 문자열
        String str = new String("동해물과 백두산이 마르고 닳도록");
		
        // limit = 2까지 문자열을 자름
        String[] strArr = str.split(" ", 2);

        // 분리된 문자열 출력
        for (int i = 0; i < strArr.length; i++) {
            System.out.printf("strArr[%d] : %s\n", i, strArr[i]);
        }
    }
}

출력 결과

저작자표시 (새창열림)

'Langauge > Java' 카테고리의 다른 글

[Java] 문자형 배열을 문자열로 변환 (CharArray to String)  (0) 2022.08.08
[Java] 문자열을 문자형 배열로 변환 (String to CharArray)  (0) 2022.08.08
    'Langauge/Java' 카테고리의 다른 글
    • [Java] 문자형 배열을 문자열로 변환 (CharArray to String)
    • [Java] 문자열을 문자형 배열로 변환 (String to CharArray)
    강잇
    강잇
    학습한 내용을 정리 및 기록하는 블로그

    티스토리툴바