C#在双引号内添加来自变量的字符串

3

你好,我有以下代码:

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版本。 - Zee Fer
1
转义引号应该是 \",而不是 "" - Prisoner
2
@Prisoner 在使用 @ 字符串时,反斜杠是字面意义上的,因此双引号需要成对出现来进行转义。 - 15ee8f99-57ff-4f92-890c-b56153
4个回答

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

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

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

这是一个在线工具,用于将字符串转换为转义/反转义:

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

所以您可以复制结果并放置您的变量。

enter image description here


0

我认为对于这种情况,最好的想法和最新的想法是在文本前加上美元符号,并且使用此符号,您无需在字符串中添加额外的符号。

例如:

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

2
此功能在 C# 6 及更高版本中可用。 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings。ZeeFer 正在使用 C#4.0。 - Jeric Cruz
@JericCruz 他没有提到他的 C# 版本。 - Amir
@JericCruz 你是超级英雄! - Amir

0

@符号用于在一个字符串中转义双引号,但在你的例子中,你实际上是将三个不同的字符串连接起来,因此你也应该转义第三个字符串,像这样:

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

或者,您也可以使用StringBuilder类,它更加内存高效,可能会使您的字符串更易于阅读。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接