[java] split 메서드 사용시 실수하기 쉬운 것

,

split는 문자열을 나누는 메서드다.

String 문자열 = "가:나:다:가나다";
String[] 나눈배열 = 문자열.split(":");
//나눈배열 : {"가", "나", "다", "가나다"}
System.out.println(나눈배열[0]);
//결과 : 가
System.out.println(나눈배열[나눈배열.length-1]);
//결과 : 가나다

그런데 아래처럼 쓰면 작동을 안 한다.

String 문자열 = "가.나.다.가나다";
String[] 나눈배열 = 문자열.split(".");

이렇게 써야 한다.

String 문자열 = "가.나.다.가나다";
String[] 나눈배열 = 문자열.split("\\.");

그래야 작동한다.

이건 split의 인자로 들어가는 String 토큰이 regex 정규식이기 때문이다. 정규식에서 .은 무작위의 한 글자를 의미한다. 그러면 모든 문자가 토큰이 되기 때문에 배열에 남는 게 없게 되는 것이다.

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

아악… 머리아프다. 여튼 기억하라. 기호를 써서 split를 쓸 때 뭔가 작동을 안 하면 \\을 붙여 보라.

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

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

참고하면 될 것이다.

👇 카테고리 글 목록

,

대표글

“[java] split 메서드 사용시 실수하기 쉬운 것”에 대한 3개의 응답

  1. 꽤 유용한 내용이예요^^ 몇 번 써봤는데, 인자값이 정규식인지는 몰랐네요;;

    1. 그쵸? 이런 거 헷갈릴 때마다 정리해 두는 게 좋은 거 같아요. 그럼 머리속이 정리되고, 다른 정보들을 접했을 때 추측할 수 있는 배경지식이 많아지니까요.

  2. 잘봤어요

댓글 남기기