如果数据包含","我在导出到csv时遇到了一些问题。在里面。
这是代码:
CSVData.push('"' + item.OrgId+ '","' + item.Name + '","' + item.OrgDescriptionString + '","' + itam.OrgDetailsString + '","' + item.Active+ '"');
如果orgDetaisl字符串包含","在其中,数据重叠并移动到下一列。
如何逃避","我尝试使用双引号"""但我不确定如何实现。
CSVData.push('"' + item.OrgId+ '","' + item.Name + '","\""' + item.OrgDescriptionString + '"\"","\""' + item.OrgDetailsString + ' \"","' + item.Active+ '"');
请纠正字符串,帮助我逃避","在数据中。
答案 0 :(得分:4)
在字段内转义分隔符的正确方法是用双引号括起字段:
Id,Description
123,"Monitor, Samsung"
然后,该字段内的引号必须使用另一个引号进行转义:
Id,Description
123,"Monitor 24"", Samsung"
当然,可以使用不同的分隔符,例如;
,但是您仍然需要检查它们是否出现在数据中。
答案 1 :(得分:1)
可能的解决方案之一可能是读取文件,然后用“”
替换读取的数据这样的事情:
readData = readData.replace(/,/g, "");
答案 2 :(得分:0)
我尝试使用以下代码,它对我有用
item.OrgDescriptionString.replace(/\"/g, "\"\"");
我试图在字符串中转义单引号并且它有效。
答案 3 :(得分:0)
这就是我实现报告的功能的方式。
简而言之:要求是获取与CSV导出中一样的逗号分隔的字符串。
假设我们有一个逗号分隔的字符串,需要按原样将其导出到CSV中。
例如,它是来自数据源的字符串值:
“ StackOverflow”,“太棒了!由StackOverflow团队工作,为他们喝彩。”
解决方案:
['stackoverflow', 'Awesome! work by stackoverflow team, cheers to them.'].map(string => string === null ? '' : `\"${string}\"`);
说明:因此,如果我们引用逗号分隔的值并尝试导出,则CSV不会将逗号(,)视为字段分隔符,因此在CSV导出中不会根据可用逗号的数量分为多列。内容将出现在同一列中。
参考Wiki链接:Comma-separated_values
希望这会有所帮助。干杯!
答案 4 :(得分:0)
使用双引号括起来的字符串并转义字符串中的双引号:
csvData.push( "\\"" + strData.replace( /\\"/g , "\\"\\"" ) + "\\"" )