我需要将字符串导出到csv。
字符串示例:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
我想在字符串中保留逗号作为逗号而不是分隔符。
所以我想把这个字符串保留为1个元素。我试着用引号"但它不起作用。我想要相同的输出,所以我想要字符串:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
但我希望逗号不要被视为分隔符。
字符串在生成的CSV文件中的格式
- 当前字符串中的所有双引号(
"
)都必须替换为两个双引号(""
) - 然后必须将整个字符串封装在双引号内(
"...
")
给定您的示例字符串:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
这就是它在生成的CSV文件中的格式:
"[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":1}}]"
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
注意在上面的示例中,必要的附加双引号("
)由插入符号(^
)表示
(插入符号仅用于说明目的)
在JS中声明字符串
在JavaScript中声明CSV字符串时,请考虑以下两个示例:
示例A:如果您的JavaScript编码风格通常使用单引号('
),只需将前面的CSV格式字符串封装在单引号内('...'
)。
例如:
const str = '"[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":1}}]"';
// ^ ^
console.log(str);
示例B:但是,如果您的JavaScript编码风格通常使用双引号("
),则:
- 将CSV格式的字符串用双引号括起来(
"..."
) - 另外,用反斜杠(
)转义所有内部双引号
例如:
const str = ""[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":1}}]"";
// ^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
console.log(str);
注意:正如您所看到的,与示例B相比,示例A是简洁的,但是当运行前面两个代码片段中的任何一个时,记录到控制台的字符串基本上是相同的。它们都会生成所需的CSV格式字符串
附加说明
如果您在问题中提供的字符串是通过使用JSON.stringify()
方法将JavaScript对象数组转换为JSON字符串而派生的。那么你可能需要考虑以下几点:
const input = [{
name: 'ALIASED_LINE_WIDTH_RANGE',
value: {
0: 1,
1: 1
}
}];
const str = `"${JSON.stringify(input).replace(/"/g, '""')}"`;
console.log(str)
正如您所看到的,如果您运行前面的代码片段,它还会将所需的CSV格式字符串记录到控制台。它通过利用:来做到这一点
- 将
input
值转换为JSON字符串的JSON.stringify()
方法 - 随后,String的
replace()
方法将所有双引号("
)替换为两个双引号(""
) - 为了将整个结果字符串封装在双引号(
"..."
)中,我们使用了Template Literal