我怎样才能强制双引号到我的字符串值

时间:2019-02-07 17:21:05

标签: c#

我需要传递一个像这样的字符串值:

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

将呼叫设置为:

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

但是valToPass最终看起来像:

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

然后将其作为字符串文字传递。在将值传递给用Delphi编写的黑盒例程时,我不希望在字符串中加上斜杠。

如何正确格式化我的字符串?

3 个答案:

答案 0 :(得分:2)

如何使用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注入的攻击。<​​/ p>

答案 1 :(得分:0)

您的字符串是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();

保证此简单方法可以产生带有转义值的有效结果。

答案 2 :(得分:-2)

使用

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