用C#替换任何<p>标签html中的文本

时间:2017-03-13 13:59:05

标签: c#

我正在尝试替换<p>标记内的任何文本,如果我有以下HTML:

<p><br />
<html><br />
<body></p>
<p><h1>My First JavaScript</h1></p>
<p><button type="button"<br />
onclick="document.getElementById('demo').innerHTML = Date()"><br />
Click me to display Date and Time.</button></p>
<p><p id="demo"></p></p>
<p></body><br />
</html> <br />
</p>
</div>

我想更改<p>标记内的任何文字并替换特殊字符,我尝试了什么:

string pTag = "<p>";
        int pLength = pTag.Length;

        int index = input.IndexOf(pTag, StringComparison.Ordinal);
        while (index > 0)
        {
            int lastIndex = input.IndexOf("</p>", index);

            if (lastIndex == index)
                break;
            var subString = input.Substring(index + pLength, lastIndex - index - pLength);
            var newsubString = System.Security.SecurityElement.Escape(subString);
            input = input.Replace(subString, newsubString);

            index = lastIndex;
        }

但是我的代码只更改了第一项, 有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您正在点击break;

找到第一个标签并做出改变之后,发表您的意见:

index = lastIndex;

下次循环开始并点击:

int lastIndex = input.IndexOf("</p>", index);

将触发相同的索引,并且中断将退出循环。

改为:

int lastIndex = input.IndexOf("</p>", index + 4);
只要IndexOf方法返回-1(表示它没有找到并且出现指定的字符串),

并中断

答案 1 :(得分:0)

我们走了:

        string html = "<p>oldtext</p>";
        string open = "<p>";
        string close = "</p>";
        int start = html.IndexOf(open);
        int end = html.IndexOf(close);
        string result = html.Substring(start + open.Length, end - (close.Length - 1));
        html = html.Replace(result, "newtext");