2013年12月29日 星期日

HTML Removal 類別庫(移除Html標籤)

HTML Removal 類別庫(移除Html標籤)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// HtmlRemoval 的摘要描述
/// </summary>
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);
    }

    /// <summary>
    /// 尋找及取代 Visual C#.NET 中的 XML 檔案中的特殊字元
    /// </summary>
    /// <param name="source"></param>
    /// <returns></returns>
    public static string StripTagsRestore(string source)
    {
        string Rsource = source;
        try
        {
            Rsource = Rsource.Replace("&amp;", "&");
            Rsource = Rsource.Replace("&lt;", "<");
            Rsource = Rsource.Replace("&gt;", ">");
            Rsource = Rsource.Replace("&quto;", "\"");
            Rsource = Rsource.Replace("&apos;", "'");
        }
        catch (System.Exception)
        {
            //throw;
        }
        return Rsource;
    }
}

參考來源:不知名網友(年代久遠已追溯不到來源)