我正在创建一个可以将excel文件转换为CSV文件的应用程序。
但是,某些字符串包含引号,因此当CSV导出时,某些字符串会拆分为两个单元格,这两个单元格应位于一个单元格中。
例如:
"39.6cm (15.6") HD (1366x768),97cm", "Core2 M3321" //15.6"<===have a quotation mark
我尝试使用&#34; trim(),replace(),Insert()&#34;删除报价,但它不起作用。我不知道。
if (HTMLTable.Contains("\""))
{
HTMLTable.Trim(new Char[] {'"'}); //Try to remove quotation
HTMLTable.Replace("\"", "");
HTMLTable.Insert(HTMLTable.IndexOf('"') - 1, "\\");
}
csvRecord += "\",\"" + HTMLTable + "\",0"; //Append the String into the CSV builder
我尝试了很多解决方案,但它不起作用。问题是什么?
感谢。
答案 0 :(得分:5)
您没有将修剪结果或替换为字符串。
您需要执行类似
的操作HtmlTable = HtmlTable.Replace("\"", string.Empty);
看看你的评论,如果你不喜欢string.Empty那么你需要做
HtmlTable = HtmlTable.Replace("\"", "");
答案 1 :(得分:2)
自strings are immutable in .NET起,您无法更改其值。这意味着对字符串的每次写操作都会生成一个新字符串。
因此,每个“修改”字符串的方法都会返回一个新的字符串。所以你必须分配这个值:
HTMLTable = HTMLTable.Replace("\"", "");
答案 2 :(得分:0)
您需要知道,.Replace不会更改现有字符串,但会在替换操作后返回新字符串。
HTMLTable = HTMLTable.Replace("\"", "");
https://msdn.microsoft.com/pl-pl/library/fk49wtc1(v=vs.110).aspx