나는 다음과 같은 라인이 어떻게 할 것인지 궁금 :자바 문자열 분할() 메서드는
String parts = inputLine.split("\\s+");
이 단순히 라인에 공백에서 문자열을 분할시겠습니까? 나는 이것을 정규식이라고 생각하지만, 전에는 본 적이 없다.
나는 다음과 같은 라인이 어떻게 할 것인지 궁금 :자바 문자열 분할() 메서드는
String parts = inputLine.split("\\s+");
이 단순히 라인에 공백에서 문자열을 분할시겠습니까? 나는 이것을 정규식이라고 생각하지만, 전에는 본 적이 없다.
예, 실제로는 이고, 숫자는 (탭, 줄 바꿈 포함)입니다. Java documentation on Patterns을 참조하십시오.
문자열을 하나 이상의 (또는 그 이상) 연속적인 공백 문자로 분리합니다. Pattern
Javadoc는 미리 정의 된 문자 클래스 (어느 \s
하나 인)
미리 정의 된 문자 클래스
임베드 필요로\\
백 슬래시 탈출 것을. Any character (may or may not match line terminators) \d A digit: [0-9] \D A non-digit: [^0-9] \s A whitespace character: [ \t\n\x0B\f\r] \S A non-whitespace character: [^\s] \w A word character: [a-zA-Z_0-9] \W A non-word character: [^\w]
참고 설명 String
입니다.
예, 그것은 탭과 공간을 모두 분할 :
String t = "test your function aaa";
for(String s : t.split("\\s+"))
System.out.println(s);
출력 : split
가 인수로 정규 표현식을 취 documentation states로
test your function aaa
예. 정규식 \s
에서
처럼 공백 문자를 포함하는의 character class 나타냅니다 ...
\t
," "
,\n
\r
+
은 quantifier이며 "1 회 이상"으로 읽을 수 있습니다.이 경우 은 하나 이상의 공백으로 구성된 텍스트를 나타냅니다.
우리는 문자열 \
리터럴 \
를 생산하는 (또 다른 백 슬래시) 탈출이 필요 특수 문자로 간주되기 때문에 (두 개의 백 슬래시) "\\s+
등이 정규식을 작성해야합니다.
그래서 split("\\s+")
은 하나 이상의 공백으로 구분 된 토큰 배열을 생성합니다. BTW 후미 빈 요소가 제거되므로 "a b c ".split("\\s+")
배열 ["a", "b", "c"]
이 아닌 ["a", "b", "c", ""]
을 반환합니다.
직접 해 보셨습니까? – CephBirk
'String # split'은'String'뿐만 아니라'String []'을 반환하기 때문에 타입 불일치가 생깁니다. – Ascalonian