想要从字符串中删除双引号
我在这里看到一些与删除双引号有关的问题。 但它没有解决我的问题。 他们告诉使用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在上面解释了完全相同的事情。 🙂