문자열을 split()을 이용하여 자르고 싶을 때 작동이 잘 안되는 경우가 종종 있습니다.
보통 "."을 이용하여 자를 때 많이 일어나는데
이것은 split(); 메서드에 들어가는 "."이 정규식으로 작동하기 때문입니다.
그냥 "."을 이용하여 잘랐을 때의 결과 입니다.
public class Test {
public static void main(String[] args) {
String str = "Hello.Wolrd.Eric!";
System.out.println("자를 문자열 => " + str);
System.out.println("문자열을 \".\"를 이용하여 잘라 배열로 만듭니다.");
String[] arrStr = str.split(".");
System.out.println();
System.out.println("====== 결과 ======");
for(String s : arrStr){
System.out.print("[" + s + "]\t");
}
}
}
"."을 이용하여 split한 결과는 공백이 출력됩니다.
해결 방법은 간단합니다.
정규식에서 .을 문자 "."으로 만들 수 있도록 역슬래시("\")를 두개 붙여주면 됩니다.
public class Test {
public static void main(String[] args) {
String str = "Hello.Wolrd.Eric!";
System.out.println("자를 문자열 => " + str);
System.out.println("문자열을 \".\"를 이용하여 잘라 배열로 만듭니다.");
String[] arrStr = str.split("\\.");
System.out.println();
System.out.println("====== 결과 ======");
for(String s : arrStr){
System.out.print("[" + s + "]\t");
}
}
}
정상적으로 결과가 출력되는것을 확인할 수 있습니다.
정규식이기 때문에 다음과 같은 형식으로 split하여도 정상 작동이 됩니다.
String[] arrStr = str.split("[.]");
'Java > 기초' 카테고리의 다른 글
[Java] Java의 GC(Garbage Collection)방법과 종류 (1) | 2019.10.17 |
---|---|
[Java] 이클립스 설치방법 - JDK 1.7 설치, Eclipse Luna 설치 (0) | 2019.08.23 |
[java] 스레드(Thread)[4] - 스레드의 상태(state) 제어 (0) | 2019.07.27 |
[java] 스레드(Thread)[3] - 스레드 우선순위를 설정하는 방법 (0) | 2019.07.27 |
[java] 스레드(Thread)[2] - Runnable을 이용하여 구현하는 방법 (0) | 2019.07.27 |
댓글