代码之家  ›  专栏  ›  技术社区  ›  bilpor

如何在字符串值中强制使用双引号

c#
  •  -1
  • bilpor  · 技术社区  · 5 年前

    我需要传递一个如下所示的字符串值:

    "<CREDS email="billybong@domain.com" myvalue="hampset" />"
    

    呼叫设置为:

    var valToPass = "<CREDS email="\"" + email + "\"" myvalue="\"" + password +  "\"" />";
    

    但是Valtopass最终看起来像:

    "<CREDS email=\"billybong@domain.com\" myvalue=\"hampset\" />"
    

    然后它将这个作为字符串文本传递。我不希望斜线和字符串一起出现,因为我要将值传递给用delphi编写的blackbox例程。

    如何正确格式化字符串?

    3 回复  |  直到 5 年前
        1
  •  2
  •   username    5 年前

    如何使用string.format并用'\'转义双引号?它使其更具可读性,尤其是在需要对模板字符串进行更多更改时:

    var escapedEmail = System.Security.SecurityElement.Escape(email);
    var escapedPassword = System.Security.SecurityElement.Escape(password);
    var valToPass = string.Format("<CREDS email=\"{0}\" myvalue=\"{1}\" />", escapedEmail , escapedPassword );
    

    避免输入值也是很重要的,否则输出字符串容易受到XML注入的攻击。

        2
  •  0
  •   Alexander Petrov    5 年前

    您的字符串是HTML或XML: "<CREDS email="billybong@domain.com" myvalue="hampset" />"

    因此,我敢建议使用Xelement的方法。

    string email = "billybong@domain.com";
    string password = "hampset";
    
    XElement xml = new XElement("CREDS",
        new XAttribute("email", email),
        new XAttribute("myValue", password));
    
    string result = xml.ToString();
    

    这个简单的方法保证用转义值产生一个有效的结果。

        3
  •  -2
  •   Jay Buckman    5 年前

    使用

    var valToPass = "<CREDS email=\"" + email + "\" myvalue=\"" + password +  "\" />";