반응형
자바에서 문자열을 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] = ^개월^
차이점이 보이시나요?
끝.
반응형