【问题标题】:Want to remove the double quotes from the strings想要从字符串中删除双引号
【发布时间】:2012-09-26 06:28:06
【问题描述】:

我在这里看到了一些与删除双引号有关的问题。但这并没有解决我的问题。他们告诉使用替换或修剪功能。我用过,但问题仍然存在。

我的代码:

DataTable dt = TypeConveriontHelper.ConvretExcelToDataTable(SourceAppFilePath);
        string targetPath = BatchFolderPath + @"\" + "TRANSACT.INX";
        StreamWriter wrtr = null;
        wrtr = new StreamWriter(targetPath);
        for (int x = 0; x < dt.Rows.Count; x++)
        {
            string rowString = "";
            for (int y = 0; y < dt.Columns.Count; y++)
            {
                if (y == dt.Columns.Count - 1)
                {
                    rowString += "\"" + dt.Rows[x][y].ToString() + "\"";
                }
                else
                {
                    rowString += "\"" + dt.Rows[x][y].ToString() + "\"~";
                }
            }           
            rowString.Replace('"', ' ').Trim();
            wrtr.WriteLine(rowString);
        }
        wrtr.Close();
        wrtr.Dispose();

我尝试在上面的代码中使用rowString.Replace('"', ' ').Trim();。但是双引号按原样存在。给我一个解决方案。谢谢。

【问题讨论】:

  • 我怀疑如果您仔细阅读其他问题中的答案,您会得到答案...请注意,您还应该按顺序使用using 语句即使有异常也要处理资源。

标签: c# string c#-4.0 replace c#-3.0


【解决方案1】:

您可以使用Trim() 同时删除空格、单引号和双引号的任意组合:

rowString.Trim('"', '\'', ' ')

【讨论】:

    【解决方案2】:

    Trim 可以删除任何字符,而不仅仅是空格。

    myString = myString.Trim('"');
    

    http://msdn.microsoft.com/en-us/library/d4tt83f9%28v=vs.110%29.aspx

    【讨论】:

      【解决方案3】:

      您的问题是一个常见错误。以下是您需要做的:

      rowString = rowString.Replace('"', ' ').Trim();
      

      确保将结果返回给变量 (rowString =)。如果您不这样做,C# 仍将运行这些方法,但不会修改变量。任何 immutable objects 都是这种情况。

      例子:

      rowString.Replace('"', ' ').Trim();
      

      不会修改实际的rowString 对象。

      rowString = rowString.Replace('"', ' ').Trim();
      

      rowString的旧值替换为右侧代码的结果。

      我写了这个答案,只是意识到 Habib 解释了上面完全相同的事情。 :)

      【讨论】:

        【解决方案4】:

        正如 Habib 所说,字符串是不可变的。任何字符串操作都需要使用替换、反向等操作数据进行设置......

        所以尝试分配被替换的字符串以获得你想要的行为。

        【讨论】:

          【解决方案5】:

          您需要将其分配回rowString

          rowString = rowString.Replace('"', ' ').Trim();
          

          Stringsimmutable

          row.String.Replace(...) 会返回一个字符串,因为你没有给它分配任何它会被丢弃的东西。它不会改变原来的rowString 对象。

          您可以使用String.Empty"" 将双引号替换为空字符串,而不是单个空格' '。所以你的陈述应该是:

          rowString = rowString.Replace("\"", string.Empty).Trim();
          

          (记得将双引号作为字符串传递 "\"",因为使用 string.Empty 的方法重载将要求两个参数都是字符串类型)。

          如果您尝试删除在字符串开头或结尾的string.Replace 期间添加的空格,则可以在末尾删除Trim()

          【讨论】:

          • @JonSkeet,我正要 :),现在修改了
          • @Habib,它工作正常,但如何删除空格。请帮忙。谢谢。
          • @Habib,我使用了 string.Empty,但它给出了错误消息,因为“String.Replace(char,char) 有一些无效的参数。谢谢
          • @John,错过了一件事,更新答案,您应该将双引号作为字符串传递。声明应为:rowString = rowString.Replace("\"", string.Empty).Trim();。检查更新的答案
          • @Habib,非常感谢。工作正常。
          【解决方案6】:

          rowString.Replace('"', ' ') 创建一个新的字符串对象并且不修改现有的字符串对象。因此您必须将新创建的字符串对象分配给不同的变量或覆盖您现有的变量。

          rowString=rowString.Replace('"', ' ').Trim()    
          or
          var somestring=rowString.Replace('"', ' ').Trim()
          

          【讨论】:

            【解决方案7】:

            在 VB 中你必须试试这个:

            Replace("""", "");
            

            但是在 C# 中你必须试试这个:

            Replace("\"", "");
            

            【讨论】:

              【解决方案8】:

              此行包含错误。

              rowString.Replace('"', ' ').Trim(); 
              

              由于替换和修剪都返回一个字符串,因此您需要将其分配给一个变量。 通过不分配字符串,您将丢失由 replace 和 trim 方法生成的值。

              var myString = rowString.Replace('"', ' ').Trim(); 
              //Or
              rowString = rowString.Replace('"', ' ').Trim(); 
              

              【讨论】:

                猜你喜欢
                • 2013-10-09
                • 2021-06-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-02-26
                相关资源
                最近更新 更多