C#在变量内附加双引号的字符串

时间:2017-10-04 01:58:03

标签: c#

您好我有以下内容:

var table = @"<table id=""table_id"" class=""display""> 

正在构建一个表并继续下一行,但我只想在table_id的末尾追加一个字符串:

var table = @"<table id=""table_id" + instance + """ class=""display"">

所以最终输出(如果实例= 1234)应为:

<table id="table_id1234" class="display">

但我认为报价正在抛弃它。关于如何实现最后一行的任何建议?

由于

4 个答案:

答案 0 :(得分:7)

string.Format方法占位符足以连接instance而不切断引号({0}是占位符):

var table = string.Format(@"<table id=""table_id{0}"" class=""display"">", instance); 

或者您可以使用转义序列\"来转义没有字符串文字的引号:

var table = "<table id=\"table_id" + instance + "\" class=\"display\">"

结果:

<table id="table_id1234" class="display">

演示:.NET Fiddle

答案 1 :(得分:1)

尝试使用以下代码将转义字符用于双引号(\"):

var id = "1234";
var table = "<table id=\"table_id" + id + "\" class=\"display\">";

这是一个将字符串转换为escape / unescape的在线工具:

https://www.freeformatter.com/java-dotnet-escape.html

因此,您可以复制结果并放置变量。

enter image description here

答案 2 :(得分:0)

我认为这种情况的最佳想法和最新想法是在您的文字之前的$符号,并且使用此符号您不需要在字符串中添加额外的符号

例如

vat table = $"<table id='table_id{instance}' class='display'">

答案 3 :(得分:0)

@用于从一个字符串中转义双引号,但在您的示例中,您实际上是连接三个不同的字符串,您应该像第三个字符串一样转义:

var table = @"<table id=""table_id" + instance + @" "" class=""display"" >";

或者,您也可以使用StringBuilder类,它可以提高内存效率,并且可以使您的字符串更易于阅读。