2011-03-04 82 views

回答

1

您必须从InputStream读取数据到缓冲区。搜索这个正则表达式:

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

这会给你头后的东西。

或者你可以用一个空字符串替换它,如果你正在寻找:

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

正则表达式为 “\ r \ n \ r \ n(*)” 不找到原始的HttpResponse任何比赛。 getEntity()。getContent()(当然放入InputStream)。任何想法为什么? – 2011-03-04 20:17:46

+0

但“()(。+)”起作用。我现在要去检查一下为什么以及这意味着什么。 – 2011-03-04 20:32:05

+0

我想我发现了我的困惑:原始HttpResponse.getEntity()。getContent()以** <!doctype html> **开头,这意味着它已经是响应主体。我可能有时会失明... – 2011-03-04 20:36:44

1

可以过滤掉使用的是Android用自己的方法模式。传递字符串,并应用模式过滤器来删除你不想要的东西。

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; 
    } 

你的模式可能会变得非常复杂,并且几乎不需要过滤任何表达式。 (你可能需要使用正则表达式等)。上面的例子用一个长度为0的字符串替换一个新行(\ n),从字符串中删除所有这些行。你可以建立模式,或者你可以再次迭代去除别的东西。

您还需要为这几个进口的工作:

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

我试过你的代码。我编译,但由于某种原因无法按预期工作。你确定代码中没有错误吗? – 2011-03-04 20:16:02

+0

我想我现在明白你的意思了:你只提供这个例子(剥离换行符,而不是响应头)。用于识别整个响应头并将其替换为空字符串的正则表达式应该是不同的,对吧? – 2011-03-04 20:30:20

+0

@Regex新秀,是的,这只是一个例子,并不是一个详尽的方法。正则表达式将是不同的是 – 2011-03-10 11:11:54

相关问题