我正在尝试替换<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;
}
但是我的代码只更改了第一项, 有什么建议吗?
谢谢!
答案 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");