我创建了一个HTTPModule,它是为我网站的每个请求调用的。在模块内部,我为HTTPApplication.Context.Response.Filter创建了自己的过滤器包装器,它允许我在将标记发送回客户端之前对其进行操作。
这里的想法是,我将搜索某些单词/短语,并用给定语言中的相同单词/短语替换它们,这些单词/短语将存储在数据库中。
我要替换的一个词是“密码”。问题是标记中有一些名为_ctl122_txtPassword的控件,当我在我的过滤器中时,我实际上只是在进行字符串操作(搜索/替换等),因此控件名称被重命名为_ctl122_txtTranslation,这会打破各种各样的事情。 / p>
所以我不想在这里替换匹配:
<input type="password" style="width: 200px;" class="formfield" id="_ctl22_txtPassword" name="_ctl22:txtPassword">
但我确实想要替换匹配:
<td align="right" class="formlabel">Password:</td>
我尝试了一些RegEx解决方案,但我远离RegEx忍者,所以这可能是要走的路,但我不太了解它们。
我尝试的唯一其他选择实际上是替换字符串'&gt;密码'。
提前感谢您的帮助。
答案 0 :(得分:0)
由于HTML的性质,编写一个可以处理每个案例的正则表达式很难。
您可以将此作为起点
http://snook.ca/archives/active_server_pages/vbscript_code_t
更好的解决方案可能是使用HTML解析工具(Html Agility Pack)
http://social.msdn.microsoft.com/Forums/en/regexp/thread/3b0a595b-cd09-446f-bbcb-d826511c364e
如果我要这样做(听起来像一个多语言网站),我可能会使用资源文件
或许已经定义了宏边界,这样我的正则表达式就可以轻松找到它。
例如使用@@的
<td align="right" class="formlabel">@@Password@@:</td>