求C# HTML源文件中的非HTML标签文本的替换方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求C# HTML源文件中的非HTML标签文本的替换方法相关的知识,希望对你有一定的参考价值。

例:
<p class="abc">太阳<img src="/ri.jpg" alt="太阳" />当空照,<br/>花儿对我笑,<br/><a href="/" target="_blank" title="小鸟">小鸟</a>说早早早,<br/>你为什么背上小书包。</p>
在这样的一段html代码中,如何才能将非HTML标签中的“太阳”换成“日”,“小鸟”换成“鸟儿”,“小书包”换成“<a href="/shubao" title="小书包">小书包</a>”。

替换过程中不能破坏HTML的现有结构,替换后要保证HTML在浏览器中正常的解析显示。
猎户座,您好,其实我需要的不是针对这一段HTML的解决方案,我想找到一个通用的解决方案,正则表达式我没有想到如何才能通用处理类似的问题。

如果你是后台以字符串的方工处理HTML的方式 那就是正则表达式了,如果你想在前台处理,那应该用javascript 而不是C# C#是服务器语言,
你说的那些 放在前台JS 用DOM数的方法来处理很方便
如果用JS 最好把你的标签加上ID
<p id="pid" class="abc">太阳<img src="/ri.jpg" alt="太阳" />当空照,<br/>花儿对我笑,<br/><a href="/" target="_blank" title="小鸟">小鸟</a>说早早早,<br/>你为什么背上小书包。</p>
在IE下的JS就可以这么写,
pid.innerHTML="日<img src='/ri.jpg' alt='日' />当空照,<br/>花儿对我笑,<br/><a href='/'target='_blank' title='小鸟'鸟儿</a>说早早早,<br/>你为什么背上<a href='/shubao' title='小书包'>小书包</a>";
如果你非想用C#处理前台 也可以 把JS用JS标签 C# 的respons.write 方法 真接写到前台去 总之如果想做好.net 那么前台离不开JS
或者你可以这样做,在前台搞一个空白的label控件,以修改label1.Text的方式 间接的修改HTML 明白么, 真接把尖括号以文本方式传到前台 , 但是成对的尖括号在浏缆器上是不会显示的。
参考技术A 你问的就是坏字过滤系统吧?
你可以搜索"坏字过滤"或者"敏感字过滤","敏感词过滤",已经有很多现成的实现了. 也可以从已经集成该模块的CMS系统中拿出来用.

如果你想自己写一个通用的方案,大致思路是这样的:

1. 建立一个数组, 里面保存所有的坏字和对应替换方法.
2. 新建一个方法, string BadWordFilter(string input), 输入一个字符串, 依次读取第1步的数组中所有的坏字,并做替换.
--扩展--
第1步的数组可以是写死的,当然也可以存放到数据库中. 可以是正则表达式过滤,也可以是普通的文本. 这样就可以动态的增删改需要过滤的字了.
参考技术B 用C#中的
string.Replace(.........)方法,可以做到
参考技术C 正则表达式, 每门语言必备

以上是关于求C# HTML源文件中的非HTML标签文本的替换方法的主要内容,如果未能解决你的问题,请参考以下文章

查找并替换所有以 # 开头的单词,并将标签文本包装在 HTML 中

C# 清除文本中的HTML标签

用 PhpWord 中的格式替换文本中的 html 标签

java去除文本内容的标签跟 

如何在节点中的文本中替换/注入html标签?

求一个JAVA替换HTML里面<img>标签里面绝对路径的部分字符串正规则表达式