2015-02-03 6 views
-5

나는 다음과 같은 라인이 어떻게 할 것인지 궁금 :자바 문자열 분할() 메서드는

String parts = inputLine.split("\\s+"); 

이 단순히 라인에 공백에서 문자열을 분할시겠습니까? 나는 이것을 정규식이라고 생각하지만, 전에는 본 적이 없다.

+3

직접 해 보셨습니까? – CephBirk

+1

'String # split'은'String'뿐만 아니라'String []'을 반환하기 때문에 타입 불일치가 생깁니다. – Ascalonian

답변

0

문자열을 하나 이상의 (또는 그 이상) 연속적인 공백 문자로 분리합니다. 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입니다.

0

예, 그것은 탭과 공간을 모두 분할 :

String t = "test your function  aaa"; 

for(String s : t.split("\\s+")) 
    System.out.println(s); 

출력 : split가 인수로 정규 표현식을 취 documentation states

test 
your 
function 
aaa 
2

예. 정규식 \s에서

처럼 공백 문자를 포함하는의 character class 나타냅니다 ...

  • \t,
  • 공간 " ",
  • 라인 분리 \n\r

+quantifier이며 "1 회 이상"으로 읽을 수 있습니다.이 경우 은 하나 이상의 공백으로 구성된 텍스트를 나타냅니다.

우리는 문자열 \ 리터럴 \를 생산하는 (또 다른 백 슬래시) 탈출이 필요 특수 문자로 간주되기 때문에 (두 개의 백 슬래시) "\\s+ 등이 정규식을 작성해야합니다.

그래서 split("\\s+")은 하나 이상의 공백으로 구분 된 토큰 배열을 생성합니다. BTW 후미 빈 요소가 제거되므로 "a b c ".split("\\s+") 배열 ["a", "b", "c"]이 아닌 ["a", "b", "c", ""]을 반환합니다.