본문 바로가기

IT

String 데이터에서 split() 메소드 사용시 띄어쓰기 인식하기

반응형

 자바에서 문자열을 split하는 경우가 꽤 됩니다. 뭐.. 데이터 파싱을 위해서 자르기도 하고, 필요에 따라 사용하는데요..


 이런 경우 "ABC DEF" 같이 중간에 띄어쓰기가 있는데 이를 인식하여 자르려고 하면 보통


 String[] arStr = "ABC DEF".split(" ");


 위와 같은 형식으로 코딩을 하게 됩니다. 이렇게 해도 잘 동작합니다만, 안되는 경우도 종종 있습니다.


 그래서 열심히 구글링하여 찾은 정보로 정규식표현을 사용하면 된다는 것을 알았습니다.


 자~ 스페이스 한칸을 인식하게 하는 방법은


 String[] arStr = "ABC DEF".split("\\s");


 를 사용하면 됩니다. 간단하죠?


 또 다른 예로 중간 공백이 가변적인 경우 1개 이상의 공백이 있는 데이터를 정상적으로 잘라내고 싶다. 그럼 다음 코드를 사용합니다.


  String[] arStr = "ABC      DEF".split("\\s+");


 공백이 1칸 이상을 인식하여 2개의 데이터로 잘라줍니다.


 아래 예제와 결과를 보고 비교해 봅시다.



public class RegularExpression {
	public static void main(String[] args) {
		String str = "1    개월";
		
		String[] arStrNormalSpace = str.split(" ");
		System.out.println("단순 공백 자르기");
		for (int i = 0; i < arStrNormalSpace.length; i++) {
			System.out.println("[" + i + "] = ^" + arStrNormalSpace[i] + "^");
		}
		
		System.out.println("정규식으로 공백 한칸 자르기");
		String[] arStrRegexSingleSpace = str.split("\\s");
		for (int i = 0; i < arStrRegexSingleSpace.length; i++) {
			System.out.println("[" + i + "] = ^" + arStrRegexSingleSpace[i] + "^");
		}
		
		System.out.println("정규식으로 1칸이상의 공백 자르기");
		String[] arStrRegexMultiSpace = str.split("\\s+");
		for (int i = 0; i < arStrRegexMultiSpace.length; i++) {
			System.out.println("[" + i + "] = ^" + arStrRegexMultiSpace[i] + "^");
		}
	}
}

 결과는 다음과 같습니다.


단순 공백 자르기
[0] = ^1^
[1] = ^^
[2] = ^^
[3] = ^^
[4] = ^개월^
정규식으로 공백 한칸 자르기
[0] = ^1^
[1] = ^^
[2] = ^^
[3] = ^^
[4] = ^개월^
정규식으로 1칸이상의 공백 자르기
[0] = ^1^
[1] = ^개월^

 차이점이 보이시나요?


끝.

반응형