将简单的javascript代码转换为c#

时间:2016-07-19 02:53:45

标签: javascript c#

昨天我在这里问了一个问题。使用javascript和html

解决方案很简单

前一段时间我的计划是操纵html来执行javascript中的任务 但我改变了主意,我将javascript代码重写为c#

这是输入

<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>

但问题是我的c#输出错了?

我翻译的代码出了什么问题?

这是javascript代码

<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>

上面代码的输出是这个

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

</Abstract>

这是正确的,下面是我的c#代码。并且输出错误

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

输出:

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

</Abstract>

1 个答案:

答案 0 :(得分:1)

问题是这里

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

您正在使用/emphasis替换/i的每个实例。不只是第一个,所有这些。之后,/emphasis/b不会替换/u的实例。

在JavaScript中,.replace默认只替换匹配字符串的第一个实例。在.NET中,它取代了所有这些。