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 👨💻:티스토리]
'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 |