2013년 5월 3일 금요일

java split 사용시 문제점

java에서 split 메소드를 사용하는 도중에
String str = "abc:def:ghi:jkl";

String data[] = str.split(":");

이렇게 하면 분리하는데
String str = "abc.def.ghi.jkl";

String data[] = str.split(".");

. 으로 분리를 하면 분리되지 않는다.

split의 인자로 들어가는 String 토큰이 regex 정규식이기 때문이다.
정규식에서 .은 무작위의 한 글자를 의미한다고 한다.

그러면 "모든 문자가 토큰이 되기 때문에" 배열에 남는 게 없게 되는 것이다.

따라서 이스케이프 문자를 앞에 붙여 줘야 한다
. 그런데 String 안에 이스케이프 문자인 \를 써 주려면 \\라고 써 줘야 한다.
따라서 \\라고 쓰는 것이다. 그래서 \\.이라고 쓰면 정규식 쪽에서는 \.라고 인식을 하고 실제 .을 찾게 되는 것이다.

기호를 써서 split를 쓸 때 뭔가 작동을 안 하면 \\을 붙여 보라.

참, 그냥 \라고만 붙여야 하는 것도 있는데, 아래 애들이다.

\b \t \n \f \r \” \’ \\

참고하면 될 것이다.

참고 http://mytory.net/archives/285

댓글 없음:

댓글 쓰기