2010-08-23 3 views
0

StringBuilder.ToString()은 문자열의 시작과 끝 부분에 '\'문자를 추가합니다.StringBuilder.ToString()은 문자열의 처음과 끝에 ''문자를 추가하고

왜 이런가요?

.ToString()을 호출하기 전에 문자열에 '\'문자가 없습니다.

+5

여기서 볼 수 있도록 코드를 입력하십시오. –

+3

몇 가지 코드를 게시 하시겠습니까? – Paddy

+0

-1 790 개 질문 후에 초급 질문을 줄이거 나 적어도 더 나은 글쓰기가 있다고 생각할 것입니다. 또는 맞춤법 검사를 배우십시오. –

답변

18

당신이 여기이 백 슬래시 생각하고 실행할 수있는 테스트입니다?

Example screenshot showing backslashes in the Watch window

그렇다면, 당신은 출력을 오독하고 있습니다 : 백 슬래시는 문자열에 실제로 아니다. C# 구문에 따라 표현을 유효하게 만들 때만 여기에 표시됩니다. 예를 들어, Console.WriteLine을 사용하여 문자열을 출력하려면 백 슬래시가 없습니다.

공정하게 말하면, 은 일치하지 않습니다.입니다. StringBuilder의 디버그보기에는 백 슬래시가 없지만 문자열에 대한 디버그보기에는 백 슬래시가 있습니다.

+0

+1, 좋은 스크린 샷 –

+0

[감사합니다!] (http://meta.stackexchange.com/questions/700/) – Timwi

+0

이것은 당신이 추가 한 인용문 때문입니다. "\"는 te 문자열에 실제로 나타나지 않습니다. 그것은 단지 디버거의 시각화입니다. 돋보기를 클릭하면 stringbuilder에 실제 텍스트가 나타납니다! – Scordo

1

StringBuilder에 어떤 텍스트가 있습니까?

다음 코드는 그냥 날

var sb = new StringBuilder(); 
sb.Append("hello"); 
var test = sb.ToString(); 
Console.WriteLine(test); 

내가 뭔가를 놓치고 밖으로 "안녕하세요"기록?

+0

정말 확실하지 않은 소리로 대답하는 것은 아닙니다. 질문은 현재 상태가 잘못되었습니다. – Dykam

+0

@Dyam : 나는 이것이 유용한 대답이라고 생각합니다. OP가 올바르게 작동하는 샘플을 제공합니다. –

+0

@Dykam 나는 질문을하는 사람과 같은 결과를 얻지 못했고 그에게 나에게 많이 줄지 않았기 때문일 수도있다. –

2

StringBuilder은 추가 한 문자를 추가하지 않습니다. 디버거 출력을 복사하기 쉽도록 문자열 작성기에 의해 생성 된 문자열의 디버그보기와 characters which may need to be escaped을 앞에두고 백 슬래시 (\)를 사용하는 것이 좋습니다.

문자는 실제로 문자열 데이터 자체가 아니며 표시 문자열의 일부입니다.

편집 : 여기 당신이

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"); 
    } 
} 
관련 문제