在字符串中使用双引号
本文关键字:字符串 | 更新日期: 2023-09-27 18:04:28
这是一个愚蠢的问题,也许它把我搞得一团糟,因为它是在一天的晚些时候,但是为什么下面的代码也在我试图使用双引号时放入反斜杠:
c#:private List<string> dataList;
private int ShowAuditLogForPrimaryID { get; set; }
private string xmlString;
private DataSet _dataSet;
SqlDataReader reader = sqlCommand.ExecuteReader();
dataList = new List<String>();
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
string rdr = reader[i].ToString();
dataList.Add(rdr);
string Name = reader.GetName(i);
xmlString = xmlString + Name + "=" + " " + "'"" + dataList[i].ToString() + "'"" + " ";
Console.WriteLine(xmlString);
}
它包括字符串中的反斜杠,这是不允许我的xml阅读器能够读取它。
我很感激你的帮助。提前感谢!您的代码看起来很好,除了在编写之前使用了一个变量。如果你想看看里面有什么,试着把字符串打印到控制台;如果您在调试器中查看它,调试器将再次尝试转义引号。
一般来说,尽量避免编写这样的代码。可以使代码更清晰的方法有:首先,慎重使用常量:
const string quote = "'"";
const string space = " ";
const string equals = "=";
xmlString = Name + equals + space + quote + dataList[i].ToString() + quote + space;
现在更容易阅读了,因为你没有了所有的引号。
第二,对ToString
的调用是不必要的。字符串连接逻辑将在必要时自动调用ToString
。
第三,明智地使用String.Format
。
const string xmlAttributeFormat = "{0} = '"{1}'" ";
string xmlString = String.Format(xmlAttributeFormat, Name, dataList[i]);