想要从字符串中删除双引号

时间:2012-10-05 06:11:20

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

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

我的代码:

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();。但双引号存在。向我展示一个解决方案。感谢。

8 个答案:

答案 0 :(得分:29)

您需要将其分配回rowString

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

Stringsimmutable

row.String.Replace(...)将为您返回一个字符串,因为您没有将任何内容分配给它。它不会更改原始rowString对象。

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

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

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

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

答案 1 :(得分:16)

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

myString = myString.Trim('"');

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

答案 2 :(得分:0)

此行包含错误。

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

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

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

答案 3 :(得分:0)

在VB中你必须尝试这个:

Replace("""", "");

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

Replace("\"", "");

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

正如Habib所说,字符串是不可改变的。任何字符串操作都需要使用像Replace,Reverse等操作数据来设置....

因此,尝试分配替换的字符串以实现所需的行为。

答案 6 :(得分:0)

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

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

请务必将结果返回给变量rowString =)。如果不这样做,C#仍将运行方法,但不会修改变量。任何 immutable objects 都是如此。

示例:

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

修改实际的rowString对象。

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

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

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

答案 7 :(得分:0)

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

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