2013-06-16 2 views
-3

을 분할하기 위해 여러 CRITERIAS가 자바에서 문자열을 분할하는 방법, 가장 일반적인 대답은 것 같은 뭔가 : 그러나은 (문자열 배열 말) 개별 단어의 배열로 단락을 분할

String para = "ameya needs to win this cup."; 
String[] abc = para.split(" "); 

파라가 포함되어 있다면? 그리고, 그리고; 어떻게 할 수 있습니까? 예를 들어 :

String para = "ameya,needs. to win?this cup."; 
+4

을 정규식 –

+0

확인을 사용하려는 시도? –

+2

작은 인터넷 검색이 도움이되는 이유를 모르겠다 - http://stackoverflow.com/questions/7492672/java-string-split-by-multiple-character-delimiter – dchhetri

답변

0

를 사용하여 정규 표현식

String str = "ameya,needs. to win?this cup."; 
String [] arr = str.split("[\\s|,|\\.|;|\\?]"); 
+0

같은 : 이것은 문자 클래스 – fge

+0

무슨 의미인가? 말하자면'[...]'안에 OR을 말할 필요가 없다는 것입니다. 현재 문자 클래스에'|'를 포함 시키므로 데이터 문자열의 모든'| '와도 일치합니다. – Pshemo

1

String#split(arg)는 인수로 정규 표현식을 받아, 정규식에 당신은 당신이 문자를 의미 양식 (a|b|c|...|z)를 사용할 수있는 문자 중 하나와 일치 할 경우 즉 a OR b OR c OR [...] OR z (... 대신 나머지 영문자를 넣어야합니다.).

그러나이 양식은 추악하기 때문에 [abcd...z]처럼 보이는 character class을 사용할 수 있습니다. 그러나 이것은 문자 범위 [a-z]을 사용하여 약간 최적화 할 수도 있습니다.

이제 질문으로 돌아가십시오. 모든 공백과 추가 문자를 일치 시키려면 각 [\\s.,;?]으로 분할 할 수 있습니다. 또한 해당 문자의 단일 그룹으로 분할하려는 경우 [\\s.,;?]+을 사용할 수 있습니다. ++ 앞에 설명 된 하나 이상의 요소를 의미합니다.

그래서 어쩌면 ** 첫번째 무엇인가, ...의이 인터뷰 질문입니다 가정 해 봅시다 당신의 ** 대답을 당신은 아마 할거야 이런 식으로

String[] abc = para.split("[\\s.,;?]+");