我需要传递一个像这样的字符串值:
"<CREDS email="billybong@domain.com" myvalue="hampset" />"
将呼叫设置为:
var valToPass = "<CREDS email="\"" + email + "\"" myvalue="\"" + password + "\"" />";
但是valToPass最终看起来像:
"<CREDS email=\"billybong@domain.com\" myvalue=\"hampset\" />"
然后将其作为字符串文字传递。在将值传递给用Delphi编写的黑盒例程时,我不希望在字符串中加上斜杠。
如何正确格式化我的字符串?
答案 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 + "\" />";