StringBuilder.ToString()
is adding '\' characters in the beginning and ending of the string.
Why is this?
Before calling .ToString() the string doesn't have the '\' character.
StringBuilder.ToString()
is adding '\' characters in the beginning and ending of the string.
Why is this?
Before calling .ToString() the string doesn't have the '\' character.
What text do you have in the StringBuilder?
The following code just writes out "hello" for me
var sb = new StringBuilder();
sb.Append("hello");
var test = sb.ToString();
Console.WriteLine(test);
Am I missing something?
StringBuilder does not add any characters besides those you have appended. Perhaps you are looking at the Debug View of a string created by string builder and characters which may need to be escaped have the backslash (\
) in front of them for convenience of copying the debug output.
The \
characters are not actually in the string data itself, but rather part of the display of the string.
Edit: here is a test you can run
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");
}
}
Are you thinking of these backslashes here?
If so, you are misreading the output: The backslashes are not actually in the string. They are only displayed here to make the representation valid according to C# syntax. If you were to output the string using Console.WriteLine
, for example, it would not have backslashes.
To be fair, it is inconsistent. The debug view for the StringBuilder
doesn’t have the backslashes, but the one for strings does.