我在这里看到一些与删除双引号有关的问题。但它没有解决我的问题。他们告诉使用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();
。但双引号存在。向我展示一个解决方案。感谢。
答案 0 :(得分:29)
您需要将其分配回rowString
:
rowString = rowString.Replace('"', ' ').Trim();
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('"', '\'', ' ')