StringBuilder.Append 删除 '\r' 和 '\n' 标签

我在我的cshtml.


StringBuilder colorizedOutput = new StringBuilder();

string concreteChar = outputArray[j] == ' ' ? " " : outputArray[j].ToString();


string htmlSpan = "<span " + "style=" + '"' + $"background-color: {color};" + "color:white;" + '"' + ">" + concreteChar + "</span>";

colorizedOutput.Append(htmlSpan);

@Html.Raw(colorizedOutput.ToString())

此字符串中的每个字符都是一个span.


我htmlSpan的 with"\r"标签是这样的:


"<span style=\"background-color: red;color:white;\">\r</span>"

但.Appned方法是这样保存的:


"<span style=\"background-color: red;color:white;\"></span>"

如您所见,\r标签消失了。


我的问题是,如何处理中的\r\n标签StringBuilder?


HUH函数
浏览 234回答 4
4回答

料青山看我应如是

当您将字符串附加到 StringBuilder 时,所有转义字符都将被删除。您可以执行以下操作来保留它们。&nbsp;var sb = new StringBuilder();&nbsp;var html = "<span style=\"background-color: red;color:white;\">\\r</span>";&nbsp;sb.Append(html);请注意,我已更改\r为\\r.输出当您尝试打电话时sb.ToString()<span style="background-color: red;color:white;">\r</span>

偶然的你

有用var someString = @"Chunk1 \r\n Chunk2";var color = "red";var colorizedOutput = new StringBuilder();foreach (var ch in someString.ToCharArray()){&nbsp; &nbsp; var concreteChar = ch == ' ' ? "&#160;" : ch.ToString();&nbsp; &nbsp; var htmlSpan = "<span " + "style=" + '"' + $"background-color: {color};" + "color:white;" + '"' + ">" + concreteChar + "</span>"+"\n";&nbsp; &nbsp; colorizedOutput.Append(htmlSpan);}Console.WriteLine(colorizedOutput.ToString());这就是我得到的

三国纷争

您可以将 htmlspan 简化为string&nbsp;htmlSpan&nbsp;=&nbsp;$"<span&nbsp;style='background-color:&nbsp;{color};color:white;>{concreteChar}</span>";这将解决您的问题。

ibeautiful

只需使用 Environment.NewLine 属性就像是StringBuilder colorizedOutput = new StringBuilder();colorizedOutput.AppendFormat("<span style=\"background-color: red;color:white;\">{0}&nbsp;</span>", Environment.NewLine);string s = sb.ToString();
打开App,查看更多内容
随时随地看视频慕课网APP