StringBuilder.ToString()
добавляет символы '\' в начало и конец строки.
Почему это?
Перед вызовом .ToString() в строке нет символа '\'.
StringBuilder.ToString()
добавляет символы '\' в начало и конец строки.
Почему это?
Перед вызовом .ToString() в строке нет символа '\'.
Вы думаете об этих обратных косых чертах здесь?
Если это так, вы неправильно читаете вывод: обратной косой черты на самом деле нет в строке. Они отображаются здесь только для того, чтобы сделать представление действительным в соответствии с синтаксисом C#. Если бы вы выводили строку, используя, например, Console.WriteLine
, в ней не было бы обратной косой черты.
Честно говоря, это несовместимо. В представлении отладки для StringBuilder
нет обратной косой черты, но в представлении для строк есть.
StringBuilder не добавляет никаких символов, кроме тех, которые у вас есть добавлено. Возможно, вы просматриваете представление отладки строки, созданной компоновщиком строк, и символы, которые может потребоваться экранирование с обратной косой чертой (\
) перед ними для удобства копирования вывода отладки.
Символы \
на самом деле не находятся в самих строковых данных, а являются частью отображения строки.
Изменить: вот тест, который вы можете запустить
private static void TestStringBuilder()
{
StringBuilder builder = new StringBuilder();
builder.Append(@"""saoetuhasoethuasteuhasoetnuh""");
foreach (char c in builder.ToString())
{
System.Diagnostics.Debug.Assert(c != '\\', "EPIC STRINGBUILDER FAIL");
}
}
Какой текст у вас есть в StringBuilder?
Следующий код просто выводит для меня "привет"
var sb = new StringBuilder();
sb.Append("hello");
var test = sb.ToString();
Console.WriteLine(test);
Я что-то упускаю?