AndroidStudio中用java实现利用正则表达式过滤html的标签,保留换行的方法

我最近做一个简单的app,用HttpURLConnection解析网络返回的值,得到的原始数据格式如下:

AndroidStudio中用java实现利用正则表达式过滤html的标签,保留换行的方法_第1张图片

为了过滤HTML的标签,达到只显示中文的目的,可以在程序中用正则表达式过滤得到的字符串。

将html的标签全部过滤的正则表达式如下:

private static final String REGEX_HTML = "<[^>]+>";
这个正则表达式的意思是匹配这样的一个子串:
(1)开始和结束的符号分别为"<"和">";

(2) 表达式"<[^>]+>"里面的"+"表示匹配前面的子表达式一次或多次;

(3)[^指定字符串] 指的是除指定字符串以外的其他字符串;所以这里的[^>]的意思就是匹配除了">"的其他所有字符;

(4)由(2)和(3)知:[^>]+的意思就是匹配一个多个除了">"的字符

这样,我们就知道了<[^>]+>的意思就是匹配<除了>之外的一个或者多个字符>这样的字符串;这样html的所有标签:例如,等全都包含在内了,

Pattern p_html = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE);//下面三行是过滤html标签
Matcher m_html = p_html.matcher(line);
line = m_html.replaceAll("");
其中的line是原来得到用HttpURLConnection解析的string
但是这样的话换行符也没了,效果如下:

为了保留原来的行排列,可以用正则表达式识别html中的换行标签
,将其替换成"\n",这样显示的最终结果就是分行。代码如下:

Pattern p_enter = Pattern.compile("
"
, Pattern.CASE_INSENSITIVE);//下面三行是将HTML中的换行符
替换成"\n"
Matcher m_enter = p_enter.matcher(line); line = m_enter.replaceAll("\n");
最终的结果如下:

AndroidStudio中用java实现利用正则表达式过滤html的标签,保留换行的方法_第2张图片




你可能感兴趣的:(AndroidStudio中用java实现利用正则表达式过滤html的标签,保留换行的方法)