StringBuilder.Append удаление тегов '\ r' и '\ n' - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю цветную строку в моем 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 с тегом "\r" выглядитэто:

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

но .Appned метод, сохраняющий его так:

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

Как видите, тег \r исчезает.

Мой вопрос таков:как бороться с \r\n тегами в StringBuilder?

Ответы [ 4 ]

3 голосов
/ 26 апреля 2019

Когда вы добавляете строку в StringBuilder, все экранирующие символы удаляются. Вы можете сделать что-то вроде ниже, чтобы сохранить их.

 var sb = new StringBuilder();
 var html = "<span style=\"background-color: red;color:white;\">\\r</span>";
 sb.Append(html);

Обратите внимание, что я изменил \r на \\r.

выход

При попытке позвонить sb.ToString()

<span style="background-color: red;color:white;">\r</span>
1 голос
/ 26 апреля 2019

это работает

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

Это то, что я получил

1 голос
/ 26 апреля 2019

Вы можете упростить htmlspan как

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

это решит вашу проблему.

0 голосов
/ 26 апреля 2019

Просто используйте свойство Environment.NewLine

Что-то вроде

StringBuilder colorizedOutput = new StringBuilder();
colorizedOutput.AppendFormat("<span style=\"background-color: red;color:white;\">{0} 
</span>", Environment.NewLine);
string s = sb.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...