2014-05-09 3 views
0

저는 비교적 자바에 익숙하지 않아 문구에 돼지 라틴어 번역기를 만들어야합니다. 여기에 사용자가 입력 할 문구를 나눌 수 있도록 지금 가지고있는 코드가 있습니다. 부적절한 서식을 지정해서 죄송합니다.자바 : 특수 문자와 공백으로 문자열 분할

String english = "Queen of all reptiles"; 
String[] words = english.split ("\\s+"); 
for (int i = 0 ; i < words.length ; i++) { 
    System.out.println (words [i]); 
} 

이 코드의 출력은 다음과 같습니다 그러나

Queen 
of  
all 
reptiles 

, I 공백 및 특수 문자로 영어 문자열을 분할하고 싶습니다 그래서

String english = "Queen. of reptiles." 

경우 출력 것이다 :

Queen 
. 
of 
reptiles 
. 

이렇게하려고 시도 : String[] words = english.split ("[^a-zA-Z0-9]", "");하지만 작동하지 않습니다.

+1

'Pattern \ Matcher '를'(\\ w + | \\.)'과 같이 사용하고 현재'String'에서 모든'String'을 찾아야 할 때 복잡한 정규 표현식을 사용해야하는 이유를 모르겠습니다. List '에 모든 요소를 ​​추가하십시오. (자세한 코드는 많지만 유지 보수가 쉽습니다). 참고 : * 복잡한 * 정규식 이미 삭제 된 답변 :' "(? :(?

답변

1

다음과 같은 문자열을 사용할 수 있습니다.

String s = "Queen. of reptiles."; 
String[] parts = s.split("(?=\\.)|\\s+"); 
System.out.println(Arrays.toString(parts)); 

출력보기 비하인드와 함께 분할을 사용하는 토론이있는 것 같습니다

[Queen, ., of, reptiles, .] 
0

이 Luiggi 멘도사 그의 코멘트에 설명 된대로 설명 된대로 작동합니다.

String english = "Queen. of reptiles."; 
Pattern p = Pattern.compile("\\w+|\\."); 
Matcher m = p.matcher(english); 

do { 
    if (m.find()) { 
     System.out.println(m.group()); 
    } 
} while (!m.hitEnd());