코딩테스트에서 겪었던 문제입니다. 잊어버리지 않기 위해 포스팅합니다.
String[] split(String regex)
split 함수는 입력받은 정규표현식 또는 특정문자를 기준으로 문자열을 나누어 배열에 리턴합니다.
Split() 함수를 사용하며 주의할 점을 알아보자.
1 |
|
특정문자 - 를 기준으로 문자열을 나누었고, 결과값은
1 |
|
이 나올 것입니다.
그렇다면,
1 |
|
의 결과값이 어떻게 나올까?
1 |
|
결과값이 안나온다.
왜 이런 결과가 나오는 것일까?
그 이유는 split() 의 정의에 있다.
split 함수는 입력받은 정규표현식 또는 특정문자를 기준으로 문자열을 나누어 배열에 리턴합니다.
문자열을 나누려 했던 기준(delimeter)인 . 은 regex 정규식이기 때문입니다.
정규식에서 . 은 무작위의 한 글자를 나타내고, 그렇기 때문에 모든 문자가 delimeter로 인식되어 배열이 공백만 남게 되는 것이다.
그렇기 때문에 이것을 문자 자체의 .으로 인식시키려면 escapse sequence 문자인 \ 를 붙여서 해결할 수 있다. 추가적으로 여기서 \를 붙이려면 \ 자체도 escapse sequnce 문자를 붙여줘야한다.
그렇기 때문에 [ \\. ] 를 사용하면 [ \ . ] 로 인식하게 되고 이는 최종적으로 [ . ] 으로 인식하게 된다.
1 |
|
이렇게 해주었을 때의 결과는
1 |
|
와 같이 의도된 대로 출력할 수 있게 된다.