2016-07-19 18 views
0

gestern habe ich eine Frage hier gestellt. und die Lösung ist einfach JavaScript und HTML mitkonvertieren einfachen JavaScript-Code zu C#

eine Weile her, was im Planung ist die HTML zu manipulieren, um die Aufgabe zu tun, in Javascript aber ich meine Meinung geändert, ich den JavaScript-Code neu schreiben zu C#

hier der Eingang

<Abstract> 
    <Heading>Abstract</Heading> 
    <Para TextBreak="No" >Some paragraph <Emphasis Type="Italic">q</Emphasis><Emphasis Type="Bold">Bold</Emphasis><Emphasis Type="Underline">Underline</Emphasis> </Para> 

</Abstract> 

aber das Problem ist die Ausgabe auf meinem C# ist falsch?

Was ist falsch mit dem Code, den ich übersetze?

hier ist die Javascript-Code

<script type="text/javascript"> 
     jQuery(document).ready(function(){ 
textval = $('textarea').val(); 
textnewval = textval.replace('Para TextBreak="No"', 'p').replace('/Para', '/p'); 

    if(textnewval.indexOf('Italic') >= 0) //If Italic 
{ 
    EmphasisAttr = 'Italic'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'i').replace('/Emphasis', '/i'); 
} 
if(textnewval.indexOf('Bold') >= 0) //If Bold 
{ 
    EmphasisAttr = 'Bold'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'b').replace('/Emphasis', '/b'); 
} 
if(textnewval.indexOf('Underline') >= 0) //If underline 
{ 
    EmphasisAttr = 'Underline'; 
    textnewval = textnewval.replace('Emphasis Type="'+EmphasisAttr+'"', 'u').replace('/Emphasis', '/u'); 
} 


    $('textarea').val(textnewval); 
    alert($('textarea').val()); 
}); 
    </script> 

die Ausgabe des obigen Code diese

<Abstract> 
    <Heading>Abstract</Heading> 
    <p >Some paragraph <i>q</i><b>Bold</b><u>Underline</u> </p> 

</Abstract> 

ist, die korrekt ist, und unten ist mein C# -Code. und der Ausgang ist falsch

string result = null; 
string input = textBox.Text; 

result = input.Replace("Para TextBreak=\"No\"", "p").ToString().Replace("/Para", "/p"); 
if (result.IndexOf("Italic") >= 0) 
{ 
    string EmphasisAttr = "Italic"; 
    result = result.Replace("Emphasis Type=\"" + EmphasisAttr + "\"", "i").ToString().Replace("/Emphasis", "/i"); 
} 
if (result.IndexOf("Bold") >= 0) 
{ 
    string EmphasisAttr = "Bold"; 
    result = result.Replace("Emphasis Type=\"" + EmphasisAttr + "\"", "b").ToString().Replace("/Emphasis", "/b"); 
} 
if (result.IndexOf("Underline") >= 0) 
{ 
    string EmphasisAttr = "Underline"; 
    result = result.Replace("Emphasis Type=\"" + EmphasisAttr + "\"", "u").ToString().Replace("/Emphasis", "/u"); 
} 
Console.WriteLine(result); 

Ausgang:

<Abstract> 
    <Heading>Abstract</Heading> 
    <p >Some paragraph <i>q</i><b>Bold</i><u>Underline</i> </p> 

</Abstract> 
+0

Javascript auf einer Webseite ist clientseitiger Code, C# ist serverseitiger Code - in diesem Sinne sind sie selten austauschbar - zugegebenermaßen bin ich nicht durch Ihren Code gegangen, um zu sehen, was Sie zu tun versuchen. –

+0

ich konvertierte den Javascript-Code Sir zu C#, aber die Ausgabe ist falsch – askquestionzero

+0

Kannst du auch in deinem Post den Inhalt von 'textval'? Dies ist die Basis unserer Untersuchung – Sherlock

Antwort

1

Das Problem ist, dass hier

result = result.Replace("Emphasis Type=\"" + EmphasisAttr + "\"", "i").ToString() 
    .Replace("/Emphasis", "/i"); 

Sie jede Instanz /emphasis mit /i sind zu ersetzen. Nicht nur der erste, alle. Danach gibt es keine Instanzen von /emphasis durch /b oder /u zu ersetzen.

In JavaScript ersetzt .replace standardmäßig nur die erste Instanz der übereinstimmenden Zeichenfolge. In .NET ersetzt es alle.

+0

danke für deine Zeit. es funktioniert jetzt. – askquestionzero

Verwandte Themen