如何在变量中的字符串中添加双引号?

212

我有一个字符串变量,例如:

string title = string.empty;

我需要把任何传递进来的内容显示在一个用双引号包裹的div中。我已经写了类似如下代码:

...
...
<div>"+ title +@"</div>
...
...

我该如何在这里添加双引号?以便它显示为:

"How to add double quotes"

不管我如何编码,使用asp.net、c#和vs2013都无法正常工作。如果查看页面源代码,“"”和“'”始终显示。我正在使用Attributes.Add(...) - djack109
这是有关编程的内容,请将以下文本从英语翻译成中文。仅返回已翻译的文本:这可能会有所帮助:https://dev59.com/zlYO5IYBdhLWcg3wIuPp?noredirect=1&lq=1 - Siavash
20个回答

413

您需要通过将它们加倍来转义它们(使用原样字符串文字):

string str = @"""How to add doublequotes""";

或者使用普通字符串字面量,你可以用 \ 来转义它们:

string str = "\"How to add doublequotes\"";

如何在保存到数据库时删除转义字符中的双引号?我只想删除用于转义的额外双引号,而不是两个。 - Anil Purswani
1
@AnilPurswani - 呃?您需要了解转义的含义。 - Oded
1
当使用字符串str = @"""如何添加双引号""";时,它将""如何添加双引号""存储在数据库中......并在获取时检索相同的内容....现在正在尝试转换它....好吧,我得到了答案- str.Replace("\"", """); ......无论如何感谢您的回复.... - Anil Purswani
如果你想让一个字符串包含引号,你需要转义它们。这与将它们存储在数据库中无关 - 如果你想在存储到数据库之前去掉引号,那么就这样做。 - Oded
@djack109 - 这是一个不同的问题。也许你可以提出一个关于你确切问题的问题? - Oded
显示剩余3条评论

59

所以你基本上是在问如何将双引号存储在字符串变量中?有两种解决方案:

var string1 = @"""inside quotes""";
var string2 = "\"inside quotes\"";

为了让它更加清晰一些,这里解释一下发生的情况:

var string1 = @"before ""inside"" after";
var string2 = "before \"inside\" after";

23

如果您需要经常执行此操作,并且希望在代码中更加简洁,您可能希望使用扩展方法来实现。

这是非常明显的代码,但我认为捕获它并使您节省时间会很有用。

  /// <summary>
    /// Put a string between double quotes.
    /// </summary>
    /// <param name="value">Value to be put between double quotes ex: foo</param>
    /// <returns>double quoted string ex: "foo"</returns>
    public static string AddDoubleQuotes(this string value)
    {
        return "\"" + value + "\"";
    }

你可以对任何字符串调用foo.AddDoubleQuotes()或""foo".AddDoubleQuotes()。


16

如果我正确理解您的问题,也许您可以尝试这个:

string title = string.Format("<div>\"{0}\"</div>", "some text");

7
另外一点说明:
    string path = @"H:\\MOVIES\\Battel SHIP\\done-battleship-cd1.avi";
    string hh = string.Format("\"{0}\"", path);
    Process.Start(@"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe ", hh + " ,--play");

hh传递的真实值将是"H:\MOVIES\Battel SHIP\done-battleship-cd1.avi"。

需要双倍字面量时,请使用:@"H:\MOVIES\Battel SHIP\done-battleship-cd1.avi";

而不是:@"H:\MOVIESBattel SHIP\done-battleship-cd1.avi";

因为第一个字面量是路径名,第二个字面量是双引号。


这似乎不起作用,我想调用ffmpeg.exe,它会字面上看到这些愚蠢的微软约定“c:\path\file.txt”,但ffmeg.exe说它需要一些带双引号的参数,但是不带转义符(反斜杠)。 - Meryan

7

您还可以将双引号包含在单引号中。

string str = '"' + "How to add doublequotes" + '"';

5

使用字符串插值和一个可工作的示例

var title = "Title between quotes";
var string1 = $@"<div>""{title}""</div>";  // Note the order of the $@
Console.WriteLine (string1);

输出

<div>"Title between quotes"</div>

4

如果您想在一个包含动态值的字符串中添加双引号。为了实现这个目的,您可以将CodeId[i]和CodeName[i]替换为您的动态值。

data = "Test ID=" + "\"" + CodeId[i] + "\"" + " Name=" + "\"" + CodeName[i] + "\"" + " Type=\"Test\";

3

你可以使用$

插值字符串: 用于构造字符串。插值字符串看起来像包含插入表达式的模板字符串,它会返回一个字符串,并使用该字符串表示中包含的插入表达式的字符串表示替换这些插入表达式。此功能可在 C# 6 及更高版本中使用。

string commentor = $"<span class=\"fa fa-plus\" aria-hidden=\"true\"> {variable}</span>";

3

你可以使用 &quot; 代替 "。浏览器会正确地显示它。


1
不管我如何编码,使用asp.net、c#和vs2013都无法正常工作。如果你查看页面源代码,“和'总是显示出来。我正在使用Attributes.Add(...) - djack109

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