转义字符串中的双引号.c#格式

本文关键字:格式 转义字符 字符串 转义 | 更新日期: 2023-09-27 18:04:24

我试图将Parameter元素的'Id'属性括在双引号中。我首先尝试简单地转义引号,这是我尝试实现的第一件事:

buffer = String.Format("{0}" + "<Parameter Id=" + "{1}" + ">" + "{2}" + "</Parameter>", buffer, id, param);
使用上面的代码,我得到了这个,正如你所看到的,转义字符出现了,还有引号:
<Conquest><User>ArchElf</User><Token>0123456789012345678901234567890</Token><Command>validate</Command><Parameter Id='"1'">Gemstone3</Parameter>

我的第二次尝试是基于我在IRC上收到的建议,一个家伙建议我可以使用'"'来获取我的报价,ala:

buffer = String.Format("{0}" + "<Parameter Id=" + "&quot;" + "{1}" + "&quot;" + ">" + "{2}" + "</Parameter>", buffer, id, param);

此方法仅在最终结果中生成文字'"'字符串:

<Conquest><User>ArchElf</User><Token>0123456789012345678901234567890</Token><Command>validate</Command><Parameter Id=&quot;1&quot;>Gemstone3</Parameter>

无奈之下,我直接在字符串中添加了双引号。

我这样做是因为我在这篇代码项目文章中读到字符串中唯一的字符。我需要担心转义的格式是花括号和(惊讶,惊讶),这甚至是不可编译的,带和不带前面的@。对我大喊一堆错误,包括:

只有赋值、call、increment、递减、await和new对象表达式可以作为语句使用;预期)预期…等等

在这件事上任何帮助都将是非常感激的。我知道这一定是我漏掉的一些微不足道的东西,最好的难题。:/

下面是整个BuildCommand方法:

public string BuildCommand(string _command, string[] _parameters = null)
    {
        int id = 1;
        string buffer = String.Format("<Conquest><User>"+"{0}"+"</User><Token>"+"{1}"+"</Token><Command>"+"{2}"+"</Command>", _playerName, _token, _command);
        if (_parameters != null)
        {
            foreach (string param in _parameters)
            {
                if (param.Length < 1 || param == null)
                    break;
                buffer = String.Format("{0}" + "<Parameter Id=" + "{1}" + ">" + "{2}" + "</Parameter>", buffer, id, param);
                // buffer = String.Format(@"""{0}""<Parameter Id=""{1}"">""{2}""</Parameter>", buffer, id, param);
                id += 1;
            }
        }

转义字符串中的双引号.c#格式

你可以用正确的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //<Conquest><User>ArchElf</User><Token>0123456789012345678901234567890</Token><Command>validate</Command><Parameter Id='"1'">Gemstone3</Parameter>
            string user = "ArchElf";
            string token = "0123456789012345678901234567890";
            string command = "validate";
            int id = 1;
            string value = "Gemstrone3";
            XElement conquest = new XElement("Conquest");
            conquest.Add(new XElement("User", user));
            conquest.Add(new XElement("Token", token));
            conquest.Add(new XElement("Command", command));
            XElement e_parameter = new XElement("Parameter", value);
            e_parameter.Add(new XAttribute("Id", id));
            conquest.Add(e_parameter);
        }
    }
}
​

你必须用'转义":

String.Format("'"{0}'"<Parameter Id='"{1}'">'"{2}'"</Parameter>", buffer, id, param);

您也可以使用逐字字符串文字,然后必须使用双引号:

String.Format(@"""{0}""<Parameter Id=""{1}"">""{2}""</Parameter>", buffer, id, param);