2012-02-23 9 views
2

가능한 중복 : 나는 같은 문자열에있을 수있는/모든 이스케이프 시퀀스는 그대로 인쇄된다 (Console.WriteLine()를 통해) 문자열을 인쇄 할 수있는 방법
Can I convert a C# string value to an escaped string literalConsole.WriteLine()에 강제로 문자열을 출력하는 방법?

?

예 :

string s = "This \r\n has \t special \\ characters."; 
Console.WriteLine(s); 

/* Output (I don't want this) 

This 
has special \ characters. 

*/ 

나는 출력이 읽고 싶은 내 응용 프로그램에서 나는 제 3 자로부터 (이스케이프 시퀀스를 포함) 문자열을 수신하고 있음을

This \r\n has \t special \\ characters. 

주 - 예를 내가 문자열을 직접 만들고 있다면, 내가 할 수 있다는 것을 알고있다.

string s = @"This \r\n has \t special \\ characters."; 
+0

그래서 우리는'xD','xA','x9' 및'x5C' 문자를 출력하고 싶습니다.하지만 다른 모든 것을 원합니까? C# 컴파일러의 해석을 원한다면, 위의 "dupe"링크를 따라 가십시오. 그렇지 않다면 더 자세한 스펙이 필요하다고 생각합니다. – AakashM

+0

@VBRonPaulFan -이 헤드 업에 대해 감사드립니다. 당신이 준 링크가 내가 찾고 있던 링크입니다. – Jed

답변

4

이 작업을 수행하는 유일한 방법은 직접 이스케이프 시퀀스를 디코딩하고 리터럴 항목으로 다시 문자열에 넣는 것입니다. 이것은 일종의 변환 기능을 필요로합니다. 예를 들어,

string EscapeIt(string value) { 
    var builder = new StringBuilder(); 
    foreach (var cur in value) { 
    switch (cur) { 
     case '\t': 
     builder.Append(@"\t"); 
     break; 
     case '\r': 
     builder.Append(@"\r"); 
     break; 
     case '\n': 
     builder.Append(@"\n"); 
     break; 
     // etc ... 
     default: 
     builder.Append(cur); 
     break; 
    } 
    } 
    return builder.ToString(); 
} 
+0

Regex를 사용할 수도 있지만 기본 원칙은 동일합니다. 또한 \를 이스케이프 처리해야합니다. – Servy

+0

@downvoter 설명해 주시겠습니까? – JaredPar

+0

@Servy'Regex'는 빠른 스위치/케이스로 할 수있는 무언가를위한 매우 무거운 솔루션입니다. 참고 나는 축 어적 문자열을 사용했기 때문에 solutin에 \를 사용하지 않아도됩니다. – JaredPar

0

당신은 바이너리 문자가 자신을 벗어나도록하십시오. 할 일이 없어야합니다.

+0

실제로 VBRonPaulFan은 자신이 원하는 링크를 가지고있는 것으로 보입니다. –