在字符串中使用双引号

本文关键字:字符串 | 更新日期: 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]);