如何使用正则表达式将b替换为相应的ascii字符?

时间:2013-11-13 11:15:11

标签: regex vb.net replace

我写了一个VB .Net应用程序,要求用户提供一个URL,然后该应用程序将提取该URL的HTML内容并过滤除<td> </td>个标记之外的任何内容以外的大部分内容。

因此,如果该网址的HTML是这样的

<html><body><table><tr><td>My content here</td></tr></table> </body> </html>

然后应用程序将打印出来: My content here

然而,问题是某些网址已使用字母的ascii代码填充这些<td></td>而不是字母本身,所以这是一个示例:

<html><body><table><tr><td>">&#098;&#097;&#110;&#100;&#105;&#116;&#032;&#097;&#116;</td></tr></table> </body> </html>

所以我的程序会显示:

'&#098;&#097;&#110;&#100;&#105;&#116;'

但是任何浏览器都会将上面显示为

bandit

我尝试使用RegEx将这些数字替换为各自的字符(使用'Chr'功能),但我失败了。 这是我试过的:

Me.TextBox3.Text = Regex.Replace(htmlDoc, "&#\d\d\d;", chr("$&"))  

但是这出现了错误。

我的问题是:如何用&#\d\d\d;替换Chr(value of the \d\d\d that was matched earlier)的所有出现?

2 个答案:

答案 0 :(得分:2)

通过使用HTMLDecode方法,可以轻松实现这一目标。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/5cd2251d-1359-49ce-b6a2-7ca492d560a5/converting-nbsp-when-using-serverurldecode?forum=csharpgeneral

string subject = HttpUtility.HtmlDecode(HttpUtility.UrlDecode(Request.QueryString["subject"]));

这是c#,但您可以轻松将其转换为vb.net。

答案 1 :(得分:0)

您可以使用HttpUtility.HtmlDecode将html解码为纯字符串。