如何使用Javascript处理CSV中的逗号

问题描述 投票:0回答:7

如果数据中包含“,”,我在导出到 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+ '"');

请更正字符串并帮助我转义数据中的“,”。

javascript jquery csv asp.net-mvc-4 export-to-csv
7个回答
12
投票

在字段内转义分隔符的正确方法是将字段用双引号引起来:

Id,Description
123,"Monitor, Samsung"

但是字段内的引号必须用另一个引号进行转义:

Id,Description
123,"Monitor 24"", Samsung"

当然,可以使用不同的分隔符,例如

;
,但是您仍然需要检查这些分隔符是否出现在数据中。


11
投票

我尝试使用下面的代码,它对我有用

item.OrgDescriptionString.replace(/\"/g, "\"\"");

我尝试转义字符串中的单引号,它成功了。


5
投票

这就是我实现所报告功能的方式。

简而言之: 要求是获取 CSV 导出中的逗号分隔字符串。

假设我们有一个逗号分隔的字符串,需要按原样导出到 CSV 中。

例如 来自数据源的字符串值:

'StackOverflow','太棒了! StackOverflow 团队的工作,为他们干杯。'

解决方案:

['stackoverflow', 'Awesome! work by stackoverflow team, cheers to them.'].map(string => string === null ? '' : `\"${string}\"`);

解释: 因此,如果我们引用逗号分隔值并尝试导出,则 CSV 不会将逗号 (,) 视为字段分隔符,因此在 CSV 导出中,它不会拆分为多个列可用逗号的数量。并且内容会出现在同一列中。

参考维基链接:逗号分隔值

希望这有帮助。干杯!!


1
投票

可能的解决方案之一是读取文件,然后用“”替换读取的数据

类似这样的:

readData = readData.replace(/,/g, "");

1
投票

使用双引号括住字符串并在字符串中转义双引号:

csvData.push( "\\"" + strData.replace( /\\"/g , "\\"\\"" ) + "\\"" )

0
投票

我也有类似的情况,这是需要在csv文件中打印的字符串:

'“P1”,“分级读物”:“三人组”,熊队 2023 年 6 月 15 日'

然后我通过使用模板文字(模板字符串)解决了它:

const exampleString = '"P1", "Graded Reader": "The Three", Bears';
const time = '15 Jun 2023';

const finalString = `"${exampleString?.replace(/"/g, '""')}" ${time}`;

0
投票

很简单,假设一个地址变量包含逗号,,那么你应该用双引号将它括起来。

data.push('"'+$('.address_1').val()+'"');

data.push('"'+address+'"');

就我而言,它工作正常!

© www.soinside.com 2019 - 2024. All rights reserved.