当前位置:  开发笔记 > 编程语言 > 正文

转义逐字字符串文字

如何解决《转义逐字字符串文字》经验,为你挑选了3个好方法。

我有以下字符串,将无法编译:

String formLookupPull = @"SELECT value1, '"+tableName+"', '"+columnName+"' FROM lkpLookups WHERE ""table"" = '" + tableName + "' and ""field"" = '" + columnName + "';";

违规部分是:

""table"" =

""field"" = 

编译器在转义序列上变得混乱.任何人都可以看到什么是错的?



1> Daniel LeChe..:

解决你的标题问题......

要在逐字字符串文字中转义引号,请使用quote-escape-sequence ""(这是两个引号字符)

string a = @"He said ""Hi!""..."; // He said "Hi!"...

有关转义等的更多详细信息,请参阅MSDN.

请注意,在您发布的代码中,唯一的逐字字符串是第一个(使用@之前的字符串).后续字符串不是逐字的,因此适当的转义序列将是\".

你可以让它看起来更漂亮string.Format:

String formLookupPull = 
   string.Format(@"SELECT value1, '{0}', '{1}' FROM lkpLookups" +
                 @"WHERE ""table"" = '{0}' and ""field"" = '{1}';", 
                 tableName, columnName)



2> Quintin Robi..:

问题是,并非所有串联的字符串都是逐字字符串文字,只有连接的第一部分是.

换一种说法,

@"SELECT value1, '"

是构建最终字符串的整个语句中唯一的逐字文字.

您需要在字符串的其余部分前面添加@以使其全部逐字.

这将使它看起来像:

String formLookupPull = @"SELECT value1, '"+tableName+ @"', '"+columnName+ @"' FROM lkpLookups WHERE ""table"" = '" + tableName + @"' and ""field"" = '" + columnName + @"';";



3> Blorgbeard..:

你想用来\"逃避报价,而不是"".

像这样:

.. FROM lkpLookups WHERE \"table\" = '" ..

编辑:

进一步说明:

你只有@你所连接的所有字符串中的第一个.在文字字符串(@前面有一个字符串)中,您可以使用双引号来转义引号.在普通字符串中,它是斜线引用.

例如.

string s = @"this is a literal string with ""quotes"" in it, " 
         +  "and this is a normal string with \"quotes\" in it";

string t = @"two literal strings" + @", concatenated together.";

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有