#javascript #string #csv
Вопрос:
Мне нужно экспортировать строку в csv.
Пример строки:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
Я хочу, чтобы запятые внутри строки были запятыми, а не разделителями.
Поэтому я хочу сохранить эту строку как 1 элемент. Я попытался завернуть это в кавычки»», но это не работает. Мне нужен тот же вывод, поэтому мне нужна строка:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
Но я хочу, чтобы запятые не рассматривались как разделители.
Комментарии:
1. Заменить «значение»:{«0″:1,»1»:1} с «значением»:'»0″:1,»1″:1′
2. @Grumpy — не уверен, как это поможет операции. Кроме того, это нарушает объект JSON (вы удалили допустимый синтаксис), что приводит к чему-то, что не может быть правильно проанализировано.
Ответ №1:
Как строка должна быть отформатирована в результирующем CSV-файле.
- Все двойные кавычки (
"
) в вашей текущей строке должны быть заменены двумя двойными кавычками (""
) - Затем вся строка должна быть заключена в двойные кавычки (
"...
«).
Учитывая ваш пример строки:
[{"name":"ALIASED_LINE_WIDTH_RANGE","value":{"0":1,"1":1}}]
Вот как он должен быть отформатирован в результирующем CSV-файле:
"[{""name"":""ALIASED_LINE_WIDTH_RANGE"",""value"":{""0"":1,""1"":1}}]"
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Примечание.В приведенном выше примере необходимые дополнительные двойные кавычки ( "
) обозначены символами каретки ( ^
).
(Символы каретки существуют только в иллюстративных целях)
Объявление строки в JS.
Рассмотрим следующие два примера при объявлении строки CSV в JavaScript:
Пример 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);
Примечание: Как вы можете видеть, пример A лаконичен по сравнению с примером B, однако при запуске любого из двух предыдущих фрагментов кода строка, записанная в консоль, по сути, одинакова. Они оба создают нужную строку в формате 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. Он делает это, используя:
JSON.stringify()
Метод преобразованияinput
значения в строку JSON.- Впоследствии метод строки
replace()
заменяет все двойные кавычки ("
) двумя двойными кавычками (""
). - Чтобы заключить всю результирующую строку в двойные кавычки (
"..."
), мы используем литерал шаблона.