使用@的StringBuilder AppendFormat

时间:2009-07-07 15:47:07

标签: c#

有可能以某种方式做到这一点而不取出@?它不喜欢@

    cJavaScript.AppendFormat(@"

            function GetNextProductIDs(state) 
            {

                var productIDs = new Array();

                var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);
                return productIDs.join();
            }; ", ClientID);

4 个答案:

答案 0 :(得分:15)

问题不在于@,而在于大括号。使用两个花括号将属性逃脱。

cJavaScript.AppendFormat(@"
        function GetNextProductIDs(state) 
        {{

            var productIDs = new Array();

            var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);
            return productIDs.join();
        }}; ", ClientID);

答案 1 :(得分:0)

我喜欢使用string.Concat或StringBuilder将这样的多行字符串附加在一起。通常我并不关心cr / lf是否存在,但如果你这样做,你可以调整:

string fmt = string.Concat(
    "function GetNextProductIDs(state) ",
    "{",
        "var productIDs = new Array();"
    ...
    );
cJavaScript.AppendFormat(fmt, ClientID);

答案 2 :(得分:0)

所有“@”正在做的是纪念换行符。您可以通过用“\ r \ n”替换换行符来删除“@”:

cJavaScript.AppendFormat(
        "function GetNextProductIDs(state)\r\n" +
        "{\r\n\r\n" +
        "    var productIDs = new Array();\r\n\r\n" +
        "    var {0}lastProductFoundIndex = $.inArray({0}lastProductID, {0}allProductIDs);\r\n" +
        "    return productIDs.join();\r\n" +
        "}; ", ClientID);

答案 3 :(得分:0)

StringBuilder的{​​{1}}方法采用格式字符串。因为您使用的字符串包含AppendFormat{作为JavaScript方法花括号,所以它将该方法解释为格式标记。

要转义它们,请使用双花括号}{{