前一段时间我的计划是操纵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>
答案 0 :(得分:1)
问题是这里
result = result.Replace("Emphasis Type=\"" + EmphasisAttr + "\"", "i").ToString()
.Replace("/Emphasis", "/i");
您正在使用/emphasis
替换/i
的每个实例。不只是第一个,所有这些。之后,/emphasis
或/b
不会替换/u
的实例。
在JavaScript中,.replace
默认只替换匹配字符串的第一个实例。在.NET中,它取代了所有这些。