2011-03-04 6 views

답변

1

데이터를 InputStream에서 버퍼로 읽어야합니다. 이 정규식 검색 :

\r\n\r\n(.*) 

이렇게하면 헤더 뒤의 정보를 얻을 수 있습니다.

또는 검색중인 경우, 빈 문자열로 교체 할 수 있습니다 : 당신은 당신의 자신의 방법으로 안드로이드를 사용하는 패턴을 필터링 할 수 있습니다

^.*?\r\n\r\n 
+0

정규식 "\ 연구 \ n \ 연구 \ n (*.)"원시 HttpResponse에에 일치하는 검색 결과가 없습니다. getEntity(). getContent() (당연히 InputStream에 배치). 왜 그런가? –

+0

하지만 "() (. +)"이 작동합니다. 왜 지금 어떻게되는지, 그리고 이것이 무엇을 의미하는지 확인할 것입니다. –

+0

원시 혼란의 원인을 찾은 것 같아요 : 원시 HttpResponse.getEntity(). getContent()는 ** **로 시작합니다. 이는 이미 응답 본문임을 의미합니다. 나는 때로는 너무 장님이 될 수도 ... –

1

. String을 전달하고 패턴 필터를 적용하여 원하지 않는 것을 제거하십시오.

public String filter(String searchString) 
    { 
     String content = searchString; 
     // Remove the new line characters. 
     Pattern newLineChar = Pattern.compile("\n+"); 
     Matcher mLine = newLineChar.matcher(content); 
     while (mLine.find()) 
      content = mLine.replaceAll(""); 
     // Return the clean content 
     return content; 
    } 

패턴이 매우 복잡해지고 원하는 표현을 거의 필터링 할 수 있습니다. (정규 표현식 등을 사용해야 할 수도 있습니다). 위의 예제는 줄 바꿈 (\ n)을 길이가 0 인 문자열로 바꿔서 문자열에서 모두 제거합니다. 패턴을 만들 수도 있고 아니면 다른 것을 제거하기 위해 다시 반복 할 수도 있습니다.

은 또한 일이에 대한 수입의 몇 가지가 필요합니다

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
+0

나는 당신의 코드를 시도했다. 컴파일하지만 어떤 이유로 든 예상대로 작동하지 않습니다. 코드에 오류가 없습니까? –

+0

나는 당신이 의미하는 바를 이제는 이해했다고 생각한다 : 당신은 예제로 이것을 제공했다 (응답 헤더가 아닌 개행을 제거하기위한 것). 전체 응답 헤더를 식별하고 빈 문자열로 바꾸는 정규식은 달라야합니다. 맞습니까? –

+0

@Regex Rookie, 네, 이것은 예일 뿐이며 철저한 접근법은 아닙니다. 정규식은 다를 것입니다. –

관련 문제