5

如何将一些字符串插入到另一个字符串的特定部分。我想要实现的是我的变量中有一个这样的html字符串说string stringContent;

 <html><head>
 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 <meta name="Viewport" content="width=320; user-scaleable=no; 
 initial-scale=1.0">
 <style type="text/css"> 
 body {
       background: black;
       color: #80c0c0; 
 } 
 </style>
 <script>

</script>
</head>
<body>
<button type="button" onclick="callNative();">Call to Native 
Code!</button>

<br><br>
</body></html>

我需要在<script> <script/>标签内添加以下字符串内容

    function callNative()
{
    window.external.notify("Uulalaa!");
}
    function addToBody(text)
{
    document.body.innerHTML = document.body.innerHTML + "<br>" + text;
}

我如何在 C# 中实现这一点。

4

6 回答 6

6

假设您的内容存储在 stringcontent中,您可以从查找 script 标签开始:

int scriptpos = content.IndexOf("<script");

然后越过脚本标签的末尾:

scriptpos = content.IndexOf(">", scriptpos) + 1;

最后插入您的新内容:

content = content.Insert(scriptpos, newContent);

这至少允许脚本标签中的潜在属性。

于 2013-05-31T12:06:22.983 回答
2

利用htmlString.Replace(what, with)

var htmlString = "you html bla bla where's the script tag? oooups here it is!!!<script></script>";

var yourScript = "alert('HA-HA-HA!!!')";

htmlString = htmlString.Replace("<script>", "<script>" + yourScript);

请注意,这将插入yourScript到所有<script>元素中。

于 2013-05-31T12:03:05.767 回答
2
var htmlString = @"<script>$var1</script> <script>$var2</script>"
                 .Replace("$var1", "alert('var1')")
                 .Replace("$var2", "alert('var2')");
于 2013-05-31T12:05:05.737 回答
1

为此,您可以使用 File.ReadAllText 方法将 html 文件读入字符串。例如,我使用了示例 html 字符串。之后,通过一些字符串操作,您可以在脚本下添加标签,如下所示。

string text = "<test> 10 </test>";
string htmlString = 
    @" <html>
        <head>
            <script>
                <tag1> 5 </tag1>
            </script>
        </head>
      </html>";

int startIndex = htmlString.IndexOf("<script>");
int length = htmlString.IndexOf("</script>") - startIndex;
string scriptTag = htmlString.Substring(startIndex, length) + "</script>";
string expectedScripTag = scriptTag.Replace("<script>", "<script><br>" + text);
htmlString = htmlString.Replace(scriptTag, expectedScripTag);
于 2013-05-31T12:11:36.943 回答
1
var htmlString = "you html bla bla where's the script tag? oooups here it is!!!<script></script>";

var yourScript = "alert('HA-HA-HA!!!')";

htmlString = htmlString.Insert(html.IndexOf("<script>") + "<script>".Length + 1, yourScript);
于 2013-05-31T11:58:43.640 回答
1

这可以使用HTML Agility Pack(开源项目http://htmlagilitypack.codeplex.com)以另一种(更安全的)方式完成。它可以帮助您解析和编辑 html,而不必担心格式错误的标签(<br/>, <br />, < br / >等)。它包括使插入元素变得容易的操作,例如AppendChild.

如果您正在处理 HTML,那么这是要走的路。

于 2013-05-31T12:18:07.633 回答