Ўводзяць некаторую радок у пэўнай часткі радка ў C #

Як ўставіць некаторую радок у пэўнай часткі іншы радкі. Тое, што я спрабую дасягнуць у мяне ёсць HTML радок, як гэта ў маім пераменным сказаць радок 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">
 
 <script>

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



</body></html>

I need to add below string content inside <script> <script/> tag

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

Як я магу зрабіць тое ў C #.

5
глядзець у stringbuilders.
дададзена аўтар Nealon, крыніца
дададзена аўтар Nealon, крыніца
Разгледзіце магчымасць выкарыстання RazorEngine.
дададзена аўтар SLaks, крыніца

6 адказы

Калі выказаць здагадку, што змесціва захоўваецца ў радку Змест , вы можаце пачаць пошук тэга сцэнара з:

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

Затым прайсці ў канцы тэга сцэнарыя:

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

І, нарэшце, каб ўставіць новы змест:

content = content.Insert(scriptpos, newContent);

Гэта, па меншай меры, дазваляе патэнцыйным атрыбутаў тэга сцэнара.

6
дададзена
Усе адказы з'яўляюцца прымальнымі .. Але я маркіроўкай гэтага толькі з-за павышаюць голасу ён GAIN .. :)
дададзена аўтар StezPet, крыніца
На жаль! Дзякуй за ўказанне на гэта. Я абнавіў адказ.
дададзена аўтар James Holderness, крыніца
Вы не павінны забываць, што радкі з'яўляюцца нязменнымі ў C# і content.Insert не будзе змяняць змесціва, так што вы павінны паўторна прызначыць яго новым значэннем.
дададзена аўтар Artur Udod, крыніца
var htmlString = @"<script>$var1</script> <script>$var2</script>"
                 .Replace("$var1", "alert('var1')")
                 .Replace("$var2", "alert('var2')");
3
дададзена

Use 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);

Note that this will insert yourScript inside all <script> elements.

2
дададзена
Sry гэта была памылка .. Я проста выдаліць каментар, дзякуй за высілак. Я дам вам +1 для вашага АНСА
дададзена аўтар StezPet, крыніца
@ArturUdod: Sry за турботы, я не знайшоў змены часткі. вось мае прабачэнні. Мне вельмі шкада, каб зрабіць такі каментар.
дададзена аўтар StezPet, крыніца
Якой іншай адказ прапанаваў выкарыстаць Замяніць метад?!
дададзена аўтар Ahmed KRAIEM, крыніца
+1, copypasting мой прыклад тэксту няма нічога дрэннага, сам код адрозніваецца, так што адказ абсалютна Ok.
дададзена аўтар Artur Udod, крыніца
@StezPet, абсалютна не крыўдуйце, я проста не хацеў сказаць, што я не супраць выкарыстання частак майго адказу, так як мы з абмеркаваннем, арыентаваныя на рашэнне тут, я лічу, вы не павінны папрасіць прабачэння.
дададзена аўтар Artur Udod, крыніца
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);
1
дададзена

This can be done in another (safer) way, using HTML Agility Pack (open source project http://htmlagilitypack.codeplex.com). It helps you to parse and edit html without you having to worry about malformed tags (
,
, < br/>
etc). It includes operations to make it easy to insert elements, like AppendChild.

Калі вы маеце справу з HTML, гэта шлях.

1
дададзена

Для гэтага вы можаце прачытаць HTML-файл у радок з дапамогай метаду File.ReadAllText. Вось, напрыклад, я выкарыстаў ўзор HTML радок. Пасля гэтага, з дапамогай некаторых радковых аперацый, якія вы можаце дадаць тэгі па сцэнары, як мае быць.

string text = " 10 ";
string htmlString = 
    @" <html>
        <head>
            <script>
                 5 
            </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>
" + text); htmlString = htmlString.Replace(scriptTag, expectedScripTag);
1
дададзена