c# 修改带有HTML标签的文本内容,不改变标签信息

前提:   遇到一个问题,就是有一个带有html标签的字符串,如果想要替换字符串里面文本的内容,但是不能改变html标签的信息,如何解决?

1、去除html标签得的方法:

public static string GetKeyName(string value)

        {

            Regex objRegExp = new Regex("<(.|\n)+?>");

            string strOutput = objRegExp.Replace(value, "");

            strOutput = strOutput.Replace("&nbsp;", "");

            return strOutput;

        }

2、解决方式:

替换成功

完整代码:

namespace ConsoleApp1

{

    class Program

    {

        public static HtmlNode re { get; set; }

        public static void setchild(HtmlNode node, string before, string after)

        {

            foreach (var item in node.ChildNodes)  //判断标签下面是否有标签嵌套着子标签,例如 <p><strong>123</strong>></p>

            {

                if (item.HasChildNodes == true)

                {

                    setchild(item, before, after);

                }

                else    //如果标签下面没有标签了,就进行替换文本信息。注意:HtmlNode是全局变量

                {

                    item.InnerHtml = item.InnerHtml.Replace(before, after);

                }

            }

        }

        static void Main(string[] args)

        {

            string before = "对于";

            string after = "888888";

            string htmlstr = "<p>对于 Netscape 6.2 中 abbr 和 acronym 元素都有效(&nbsp;&nbsp;&nbsp;&nbsp;)。</p>";

            HtmlDocument hd = new HtmlDocument(); //新建该类用于接受html字符信息

            re = hd.CreateElement("");  //hd.CreateElement()返回HtmlNode对象(全局变量re)

            re.InnerHtml = htmlstr;    //HtmlNode对象InnerHtml属性来接收html字符串

            if (re.HasChildNodes == true)  //判断HtmlNode对象里面有没有标签,例如 <p></p>

            {

                setchild(re, before, after);  //调用处理方法,传入HtmlNode对象

            }

            Console.WriteLine(GetKeyName(htmlstr));

            Console.WriteLine(before + "替换成:" + after);

            Console.WriteLine(GetKeyName(re.InnerHtml));

            Console.ReadLine();

        }

        public static string GetKeyName(string value)    //去除html标签

        {

            System.Text.RegularExpressions.Regex objRegExp = new System.Text.RegularExpressions.Regex("<(.|\n)+?>");

            string strOutput = objRegExp.Replace(value, "");

            strOutput = strOutput.Replace("&nbsp;", "");

            return strOutput;

        }

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容