大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C#移除HTML标记

C#移除HTML标记(1)

关键词:移除html标记HTML  阅读(979) 赞(16)

[摘要]本文是对C#移除HTML标记的讲解,与大家分享。

  移除一段文字中的HTML标记,以消除其中包含的样式和段落等,最常用的办法可能就是正则表达式了。但是请注意,正则表达式并不能处理所有的HTML文档,所以有时采用一个迭代的方式会更好,如for循环。看下面的代码:

using System;
using System.Text.RegularExpressions;

/// <summary>
/// Methods to remove HTML from strings.
/// </summary>
public static class HtmlRemoval
{
    /// <summary>
    /// Remove HTML from string with Regex.
    /// </summary>
    public static string StripTagsRegex(string source)
    {
        return Regex.Replace(source, "<.*?>", string.Empty);
    }

    /// <summary>
    /// Compiled regular expression for performance.
    /// </summary>
    static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);

    /// <summary>
    /// Remove HTML from string with compiled Regex.
    /// </summary>
    public static string StripTagsRegexCompiled(string source)
    {
        return _htmlRegex.Replace(source, string.Empty);
    }

    /// <summary>
    /// Remove HTML tags from string using char array.
    /// </summary>
    public static string StripTagsCharArray(string source)
    {
        char[] array = new char[source.Length];
        int arrayIndex = 0;
        bool inside = false;

        for (int i = 0; i < source.Length; i++)
        {
            char let = source[i];
            if (let == '<')
            {
                inside = true;
                continue;
            }
            if (let == '>')
            {
                inside = false;
                continue;
            }
            if (!inside)
            {
                array[arrayIndex] = let;
                arrayIndex++;
            }
        }
        return new string(array, 0, arrayIndex);
    }
}

  代码中提供了两种不同的方式来移除给定字符串中的HTML标记,一个是使用正则表达式,一个是使用字符数组在for循环中进行处理。来看一下测试的结果:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        const string html = "<p>There was a <b>.NET</b> programmer " +
            "and he stripped the <i>HTML</i> tags.</p>";

        Console.WriteLine(HtmlRemoval.StripTagsRegex(html));
        Console.WriteLine(HtmlRemoval.StripTagsRegexCompiled(html));
        Console.WriteLine(HtmlRemoval.StripTagsCharArray(html));
    }
}

  输出结果如下:

«上一页12下一页»


相关评论