3

コードテンプレートが必要な場合は、次のようにPythonを使用できます。

templateString = """
%s 
%s
%s
"""

print templateString % ("a","b","c")

C#で同等のものを実装するにはどうすればよいですか?

私は試した

using System;

class DoFile {

    static void Main(string[] args) {
        string templateString = "
        {0}
        {1}
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}

しかし、私は得ました

dogen.cs(86,0): error CS1010: Newline in constant
dogen.cs(87,0): error CS1010: Newline in constant
dogen.cs(88,0): error CS1010: Newline in constant

もちろんtemplateString = "{0}\n{1}\n{2}\n";動作しますが、templateStringはコードの一部を生成するためのものであり、非常に長いため、複数行のテンプレートを使用する必要があります。

4

4 に答える 4

3

代わりにこれを行ってください(文字列定数の前に@を追加してください):

class DoFile {

    static void Main(string[] args) {
        string templateString = @"
        {0}
        {1}
        {2}
        ";
        Console.WriteLine(templateString, "a", "b", "c");
    }
}
于 2011-05-13T18:35:12.297 に答える
3

最初の見積もりの@​​前に配置する必要があります

templateString = @"
        {0}
        {1}
        {2}
        ";

逐語的文字列リテラルにする

逐語的な文字列リテラルでは、区切り文字の間の文字は逐語的に解釈されますが、唯一の例外は引用符-エスケープシーケンスです。特に、 単純なエスケープシーケンスと16進数およびUnicodeのエスケープシーケンスは、逐語的な文字列リテラルでは*処理されません*。逐語的な文字列リテラルは複数行にまたがることがあります。

于 2011-05-13T18:35:57.447 に答える
0

Uは、変数名の前に@を付けて、複数行の文字列を取得できます。

于 2011-05-13T18:37:16.377 に答える
0

文字列の引用符の前に@を付ける必要があります。これにより、文字列が逐語的にリテラルになり、使用するすべての空白が引き続き使用されます。

于 2011-05-13T19:18:16.517 に答える