2013-10-20 4 views
2

이 코드를 공백 "과 나는 할 수 없다. 나는 "공간"이 "공간"이 아니라고 생각하고있다.자바 분할 오류

나쁜 영어로 죄송합니다. 저는 스페인어입니다.

답변

2

당신은 설명이

String message = receiveMessage(); 
message = message.replaceAll("[\n\r\\s]", ""); 
String[] str1 = message.split("[|]"); 
for (int i = 0; i < str1.length; i++) { 
    System.out.println(str1[i]); 
} 
+0

고맙습니다 !!, 당신은 내 문제를 해결! :) – Dementor

+0

@Dementor 그것을 듣고 기쁘게 .. .. 당신은 환영합니다 .. – Prabhakaran

+0

왜 그냥 트림을 사용하지 않니? – Dedyshka

7

split 정규식을 사용하여 정규식 |에 특별한 의미를 가지고 정도 "|"은 빈 문자열 "" 또는 빈 문자열 ""을 의미한다. 빈 문자열에 분할은

"ABC" 

(나는 |로 표시됩니다)

"|A|B|C|" 

배열 ["", "A", "B", "C", ""] 생산이 장소에 분리된다는 것을 의미하지만, split documentation으로 빈 문자열은 후행

을 말한다 결과 배열에 포함되지 않음

그래서 마지막 빈 공간이 제거됩니다. 당신은

  • split("\\|")
  • 또는 split("[|]") 예를

    에 사용 이스케이프 할 필요가 | 문자 확인 싶다면 당신은 ["", "A", "B", "C"]


    이제 결과를 얻을.

  • 또는 split(Pattern.quote("|"))
  • 또는 split("\\Q|\\E")
+1

+1 –

+0

@Pshemo 같이 할 수있는, Thanks..I는 [] 자바의 정규 표현식에 대해 알고하지 않았다. .. 그게 어디서 읽을 수 있니? – Dedyshka

+1

@Dedyshka'[..]'는 [문자 클래스] (http://www.regular-expressions.info/charclass.html)입니다. 'a'와 'e'사이의 문자를 찾고 싶다고합시다. ''a | b | c | d | e "'와 같은 정규 표현식을 만들거나'[abcde]'와 같은 문자 클래스를 사용하거나'[a-e]'와 같이 범위 연산자'-'를 사용할 수 있습니다. 하나의 문자 클래스는 내부에 문자 나 문자의 범위가 거의 없으며 순서가 중요하므로 모든 요소는 기본적으로 OR 연산자로 구분되므로 내부에 명시 적으로 사용하지 않아도됩니다. 그래서 regex metacaracter 대신 literal으로 취급됩니다. – Pshemo