C#에서 문자열을 이스케이프 문자열 리터럴로 변환
C#에서 문자열 값을 탭 및 줄 바꿈과 같은 이스케이프 시퀀스가 있는 문자열 리터럴로 어떻게 변환합니까?
다음 코드가 있다고 가정합니다:
<code class="language-c#">Console.WriteLine(someString);</code>
출력 결과는 다음과 같습니다.
<code>Hello World!</code>
문자열 인수를 받아들이고 다음 출력을 생성하는 ToLiteral
메서드를 생성하려고 합니다.
<code>\tHello\r\n\tWorld!\r\n</code>
해결책:
방법 1: Roslyn의 CodeDomProvider 사용
과거에는 다음 코드와 같이 System.CodeDom.Compiler
네임스페이스에서 CodeDomProvider
을 사용하는 솔루션이 있었습니다.
<code class="language-c#">private static string ToLiteral(string input) { using (var writer = new StringWriter()) { using (var provider = CodeDomProvider.CreateProvider("CSharp")) { provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null); return writer.ToString(); } } }</code>
방법 2: Roslyn의 Microsoft.CodeAnalytic.CSharp 패키지 사용
최근 Graham High는 Roslyn의 Microsoft.CodeAnalytic.CSharp NuGet 패키지를 사용하여 동일한 결과를 더 효율적으로 얻을 수 있다는 사실을 발견했습니다.
<code class="language-c#">private static string ToLiteral(string valueTextForCompiler) { return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false); }</code>
이 방법은 Roslyn 라이브러리에서 제공하는 기능을 직접 사용하는 방식으로 더욱 간결하고 효율적입니다.
위 내용은 C# 문자열을 이스케이프 문자열 문자로 변환하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!