Reputation: 267320
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.
Upvotes: 0
Views: 5341
Reputation: 66604
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.
Upvotes: 18
Reputation: 64148
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");
}
}
Upvotes: 2
Reputation: 2573
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?
Upvotes: 1