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

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

我的代码:

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();在上面的代码中。但双引号存在。请向我提供一个解决方案。谢谢。

您需要将其分配回rowString

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

字符串是不可变的 。

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

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

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

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

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

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

 myString = myString.Trim('"'); 

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

该行包含错误。

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

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

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

在VB中你必须尝试这个:

 Replace("""", ""); 

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

 Replace("\"", ""); 

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

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

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

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

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

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

一定要将结果返回给变量rowString = )。 如果不这样做,C#仍将运行方法,但不会修改变量。 任何不可变对象都是这种情况。

例:

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

不会修改实际的rowString对象。

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

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

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