【发布时间】:2010-11-23 21:37:16
【问题描述】:
奇怪的问题,但我不会浪费时间解释为什么我需要这样做,只是我需要这样做。
我有以下几点:
<input type="radio" name="eq_9" id="eq_9_2" onclick="nextStepID_load(this);" value="Installer." title="912" /><label for="eq_9_2">Installer</label> <br />
我需要把它变成:
<button type="button" name="eq_9" id="eq_9_2" onclick="nextStepID_load('912');">Installer</button><br />
我正在使用 C#/asp.net(3.5 或更低版本)和用于 performJS 的 javascript(这是一个占位符,直到我弄清楚如何替换 html)。
请注意,提供此信息的来源正在向我发送一个包含许多输入行的字符串。我需要用对其有效的信息替换每一行。
现在,我尝试添加一个 .Replace("","\">"); 它确实替换了无线电标签,但显然它在代码方面看起来很糟糕,并且不会删除标签或放置标签之间的标签内容。
我确信这可能最好通过正则表达式来解决,但我对正则表达式不是很熟悉。我一直在玩 regexlib,看看我是否可以自己找出一个正则表达式......这是我到目前为止所拥有的,虽然我想我还很遥远。
string strRegex = @"<input type=""radio"" [\s]*=[\s]*""?[^\w_]*""?[^>]*>";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"<input type=""radio"" name=""eq_9"" id=""eq_9_2"" onclick=""nextStepID_load(this);"" value=""Installer."" title=""912"" /><label for=""eq_9_2"">Installer</label> <br />";
string strReplace = "<button type="button"></button>";
return myRegex.Replace(strTargetString, strReplace);
【问题讨论】:
-
哦!哦!轮到我发布这个链接,详细说明使用正则表达式解析 HTML 的愚蠢之处:stackoverflow.com/questions/1732348/…
-
这似乎是具有众所周知特征的固定 HTML。如果这是真的,那么用正则表达式解析是微不足道的,你可能应该简单地这样做。真正的问题是它实际上是如何固定的,以及什么去哪里了。
-
@tchrist:当然,他的小例子看起来像固定的 html,我确信他收到的文档格式正确(谁知道什么规范),我同样确定某个地方您可以构建一个 reg ex 来解析示例(这次)。但归根结底,Friends 不会让 Friends 混合 RegEx 和 HTML。永远。
-
@Chris:我对在 HTML 我自己生成的上使用正则表达式没有任何疑虑。在其他人的情况下,嗯,那是我开始感到不安的时候。