首页 新闻 会员 周边

【求助】 C#如何获取转义后的输出格式文本,并将其存入字符串?

0
悬赏园豆:30 [已关闭问题] 关闭于 2016-06-14 16:46

我在使用RestSharp,获取到指定网页的html文本,但该文本的格式都是转义过的,如下:

\r\n\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\t<head>\r\n\t\t<title>
.........
.........

我想要得到转义后的正常html代码,就是在console.WriteLine()中输出后的那种:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>
...........
...........

并将其存入string变量中,请问如何操作?

chutianshu_1981的主页 chutianshu_1981 | 初学一级 | 园豆:43
提问于:2016-06-14 09:20
< >
分享
所有回答(4)
0

如果没有\r\n\t你保存在string里的东西就是一坨。

长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-06-14 09:31

我就是要一坨,我又不是要看,要转义干嘛,我要直接用代码处理dom,转义字符会影响操作,谁还不知道转义字符作用

支持(0) 反对(0) chutianshu_1981 | 园豆:43 (初学一级) | 2016-06-14 09:36

@chutianshu_1981: 你要人肉解析html?当我没说(逃。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-06-14 09:38

@长蘑菇星人: 

我要在winform应用中,用代码获取html里的特定模块。

用第三方库“HtmlAgilityPack”可以很方便进行html解析,前提是没有转义字符影响,得要纯粹的html代码。

 

如果实在没有什么好办法,我就直接用正则表达式去匹配了。

支持(0) 反对(0) chutianshu_1981 | 园豆:43 (初学一级) | 2016-06-14 09:43

@chutianshu_1981: 什么样的库解析不了\r\n\t,我觉得并不是库不行。再说C#正则异常强大,绝对比你人肉快。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-06-14 09:49
0

Html.Raw(返货的字符串)

如此低调的男人 | 园豆:842 (小虾三级) | 2016-06-14 14:09

我还是需要html标签的

支持(0) 反对(0) chutianshu_1981 | 园豆:43 (初学一级) | 2016-06-14 16:43

@chutianshu_1981: 那你就在获取到值的时候替换一下呀,把\r\n替换成<br />,把\t替换成空格就好了呀

支持(0) 反对(0) 如此低调的男人 | 园豆:842 (小虾三级) | 2016-06-15 16:22
0

自己试了试,用的方法是:

1)先去掉/n/r/t之类的

string s = new string((from c in content.ToCharArray() where  !char.IsControl(c) select c).ToArray());

2)使用string的replace方法把剩下的转义字符去掉。

 

关键是不太熟悉正则,不想再花时间查正则表达式,否则用正则也很不错

chutianshu_1981 | 园豆:43 (初学一级) | 2016-06-14 16:45
1

讲真正则一下就搞定了。。。

Regex.Replace(@"\t\r\n", @"\\t|\\r|\\n", m=> {
        switch(m.ToString()) {
            case @"\t": return "\t";
            case @"\r": return "\r";
            case @"\n": return "\n";
        } return m.ToString();
    }).

 

癫ω倒④ゞ | 园豆:262 (菜鸟二级) | 2016-07-16 10:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册