답변:
라인에 뭔가
myString.split("\\s+");
모든 공백을 구분 기호로 그룹화합니다.
따라서 문자열이 있으면
"Hello[space][tab]World"
이것은 문자열을 산출 "Hello"
하고 "World"
와 사이의 빈 공간을 생략 해야 [space]
합니다 [tab]
.
VonC는 지적 자바 먼저 특수 문자로 문자열을 탈출을 시도하고 보내기 때문에, 백 슬래시는 탈출해야 한다는 구문 분석 할 수 있습니다. 원하는 것은 리터럴 "\s"
입니다. 즉, 전달해야합니다 "\\s"
. 약간 혼란 스러울 수 있습니다.
은 \\s
동일합니다 [ \\t\\n\\x0B\\f\\r]
.
trim()
먼저 다음 을 수행해야합니다 trim().split("\\s++")
.-그렇지 않으면`abc`를 분할하면 두 개의 빈 문자열이 먼저 나옵니다.
"\\\\s"
?
대부분의 정규식 방언에는 이런 종류의 물건에 사용할 수있는 편리한 문자 요약이 있습니다.
\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
Apache Commons Lang에는 공백 문자가있는 문자열을 구분 기호로 분할하는 방법이 있습니다.
StringUtils.split("abc def")
정규식 패턴보다 사용하기가 더 쉽습니다.
이 코드를 공부하십시오. 행운을 빈다
import java.util.*;
class Demo{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Input String : ");
String s1 = input.nextLine();
String[] tokens = s1.split("[\\s\\xA0]+");
System.out.println(tokens.length);
for(String s : tokens){
System.out.println(s);
}
}
}