>백엔드 개발 >C++ >C# 문자열을 이스케이프 문자열 문자로 변환하려면 어떻게해야합니까?

C# 문자열을 이스케이프 문자열 문자로 변환하려면 어떻게해야합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-28 00:42:08813검색

How Can I Convert a C# String to an Escaped String Literal?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.