728x90

Split()

Split 메소드는 구분자를 "문자"로 받는 게 아니라 "정규식"으로 받는다

구분자로 문자열 분리

예시)

  String str="오늘은 금요일, 공부하고 운동가자!!";
	
	String ary[]=str.split(",");   // 쉼표를 기준으로 문자열을 나눈다 전[0] 후[1]
			System.out.println(a[0]);
			System.out.println(a[1]);
			
			for(String str:ary) {  //for(변수:배열명)
				System.out.println(str);
			}

-------------------------------

오늘은 금요일
 공부하고 운동가자!!
오늘은 금요일
 공부하고 은동가자!!

 

여러개 구분자로 문자열 분리하기

정규식 or를 의미하는 대괄호로 감싸서 구분자로 사용할 특수문자를 적어주면 된다.

예시)

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {

        String str = "hello-world%inpa@tistory#com";
        String[] splitter = str.split("[%-@#]");

        for (int i = 0; i < splitter.length; i++) {
            System.out.printf("%d위치 : %s\n", i, splitter[i]);
        }
    }
}
---------------------
0위치 : hello
1위치 : world
2위치 : inpa
3위치 : tistory
4위치 : com

 

 

 

StringTokenizer 

문자열을 구분자를 이용하여 분리할 때 사용이 가능한 클래스

 

BufferedReader 클래스의 메소드로 입력을 읽어드린다면 라인 단위로 읽어 들일 수밖에 없는데,

꼭 BufferedReader 클래스만이 아니더라도,   스페이스를 기준으로  "," , "   "을 기준으로 문자열을 분리하거나 특정 문자에 따라 문자열을 나누고 싶을 때 사용됨

 

 

토큰을 꺼내와서 StringTokenizer에서 지원하는 메소드로 원하는 방식으로 문자열을 가공해야 하는 방식인 Split과는 사용방법이 차이가 있다.

 

StringTokenizer 메소드
int countTokens() 전체 토큰의 수를 반환
boolean hasMoreTokens()
boolean hasMoreElements()
잔여 토큰 유무
String nextToken() 다음 토큰을 반환

 

 

 

1. StringTokenizer st = new StringTokenizer(str)
= 공백문자를 기준으로 문자열을 분리

예시)

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {

        String str = "Manner make a man";
        StringTokenizer st = new StringTokenizer(str);

        System.out.println("str의 토큰 개수: "+st.countTokens());
        while(st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }
    }
}
Qurious)
while(st.hasMoreTokens())는 문자열을 토큰으로 분리할 때, 아직 처리되지 않은 토큰이 남아 있는지 확인하기 위해 사용된다.
이 부분이 없으면 모든 토큰을 읽고 출력할 수 없어서 꼭 필요함
만약 이 부분을 제거하면 모든 토큰을 출력하는 대신 첫 번째 토큰만 출력됨

 

 

2. StringTokenizer st = new StringTokenizer(str. 구분자);
// 토큰을 기준으로 문자열을 분리
// 이때, 구분자는 토큰으로 간주되지 않음.

 

예시)

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {

        String str = "Manner@make@a@man";
        StringTokenizer st = new StringTokenizer(str, "@");

        System.out.println("str의 토큰 개수: "+st.countTokens());
        while(st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }
    }
}

 

 

3.StringTokenizer st = new StringTokenizer(str. 구분자, boolean);
= 구분자를 기준으로 문자열을 분리할 때 구분자도 토큰으로 포함(true)  /  미포함(false)

 

예시)

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {

        String str = "Manner@make@a@man";
        StringTokenizer st = new StringTokenizer(str, "@",true);

        System.out.println("str의 토큰 개수: "+st.countTokens());
        while(st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }
    }
}
-----------------------------------------------------------
str의 토큰 개수: 7
Manner
@
make
@
a
@
man

 

 

 

 

 

 

참조 및 인용

출처: https://inpa.tistory.com/entry/JAVA-☕-Split-StringTokenizer-문자열-자르기-비교하기 [Inpa Dev 👨‍💻:티스토리]

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 다형성 역할과 구현 ★  (0) 2024.03.10
[JAVA] Scanner / BufferedReader  (0) 2024.03.09
[JAVA] 종합예시  (0) 2024.03.08
[JAVA] 객체배열  (1) 2024.03.08
[JAVA] 인터페이스 ★  (0) 2024.03.08

+ Recent posts