무엇 정규식 패턴을 통과 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")
정규식 패턴보다 사용하기가 더 쉽습니다.