[java] 공백 문자가있는 문자열을 구분 기호로 분할하는 방법

무엇 정규식 패턴을 통과 I를 필요가 java.lang.String.split() 모든 공백 문자 (사용하여 문자열의 배열로 문자열을 분할 ' ', '\t', '\n'구분 기호로 등)?



답변

라인에 뭔가

myString.split("\\s+");

모든 공백을 구분 기호로 그룹화합니다.

따라서 문자열이 있으면

"Hello[space][tab]World"

이것은 문자열을 산출 "Hello"하고 "World"와 사이의 빈 공간을 생략 해야 [space]합니다 [tab].

VonC는 지적 자바 먼저 특수 문자로 문자열을 탈출을 시도하고 보내기 때문에, 백 슬래시는 탈출해야 한다는 구문 분석 할 수 있습니다. 원하는 것은 리터럴 "\s"입니다. 즉, 전달해야합니다 "\\s". 약간 혼란 스러울 수 있습니다.

\\s동일합니다 [ \\t\\n\\x0B\\f\\r].


답변

대부분의 정규식 방언에는 이런 종류의 물건에 사용할 수있는 편리한 문자 요약이 있습니다.

\w -모든 단어 문자와 일치합니다.

\W -단어가 아닌 문자와 일치합니다.

\s -공백 문자와 일치합니다.

\S -공백 문자 이외의 문자와 일치합니다.

\d -모든 숫자와 일치합니다.

\D -숫자를 제외한 모든 항목과 일치합니다.

“Regex Cheatsheets”를 검색하면 유용한 요약이 많이 나옵니다.


답변

Javascript 에서이 작업 을 수행하려면 다음을 수행해야했습니다.

myString.split(/\s+/g)


답변

“\\ s +”는 트릭을 수행해야합니다


답변

또한 UniCode non-breaking space xA0이있을 수 있습니다 …

String[] elements = s.split("[\\s\\xA0]+"); //include uniCode non-breaking


답변

String string = "Ram is going to school";
String[] arrayOfString = string.split("\\s+");


답변

Apache Commons Lang에는 공백 문자가있는 문자열을 구분 기호로 분할하는 방법이 있습니다.

StringUtils.split("abc def")

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String)

정규식 패턴보다 사용하기가 더 쉽습니다.