Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara menukar rentetan C# ke literasi rentetan yang melarikan diri?

Bagaimana cara menukar rentetan C# ke literasi rentetan yang melarikan diri?

Barbara Streisand
Barbara Streisandasal
2025-01-28 00:46:10578semak imbas

Tukar rentetan C# kepada literal rentetan terlepas

How to Convert C# Strings to Escaped String Literals?

Soalan:

Adakah mungkin untuk menukar nilai rentetan C# kepada literal rentetan yang mengandungi urutan pelarian, seperti tab dan baris baharu? Sebagai contoh, tukar rentetan yang mengandungi aksara tab dan baris baharu kepada rentetan yang mengandungi urutan pelarian "t" dan "rn"?

Jawapan:

Kaedah tradisional:

Satu kaedah telah digunakan untuk masa yang lama:

<code class="language-csharp">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>

Menggunakan kaedah ini, anda boleh menukar rentetan seperti ini:

<code class="language-csharp">var input = "\tHello\r\n\tWorld!";</code>

Hasil output ialah:

<code>"\tHello\r\n\tWorld!"</code>

Alternatif untuk menggunakan Roslyn:

Kaedah yang lebih baharu melibatkan pakej Microsoft.CodeAnalysis.CSharp daripada NuGet. Berikut ialah kod yang dikemas kini:

<code class="language-csharp">private static string ToLiteral(string valueTextForCompiler)
{
    return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false);
}</code>

Menggunakan kaedah ini, anda boleh mendapatkan hasil yang sama seperti kaedah sebelumnya, menukar rentetan seperti ini:

<code class="language-csharp">var input = "\tHello\r\n\tWorld!";
Console.WriteLine(ToLiteral(input));</code>

Hasil output ialah:

<code>"\tHello\r\n\tWorld!"</code>

Atas ialah kandungan terperinci Bagaimana cara menukar rentetan C# ke literasi rentetan yang melarikan diri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn