Node.js Массив для текста с новой строкой - PullRequest
0 голосов
/ 02 июля 2018

Я хотел преобразовать массив в текстовый файл с новой строкой, разделяющей каждую запись.

Я узнал о пакете npm, который называется array-to-txt-file. Вот веб-страница: массив к TXT-файл

Этот пакет утверждает, что объединит каждый элемент массива с новой строкой, так что каждый элемент массива появится в отдельной строке текстового файла.

Итак, я попробовал, и хотя он отлично работает, он не объединяет элементы с новой строкой. Там, где заканчивается один элемент, начинается другой.

Итак, я взглянул на исходный код пакета, и этот код создает этот эффект.

try {
    array.forEach(v => {
      if(_.isPlainObject(v)) {
        ws.write(`${JSON.stringify(v)}\n`)
        return
      }
      ws.write(`${v}\n`)
    })

Особенно часть ws.write( $ {v} \ n ).

Затем я импортировал свой выходной текстовый файл в шестнадцатеричный редактор. В шестнадцатеричном редакторе была точка между каждым элементом. Теперь эта точка отличалась от обычной точки.

В то время как обычная точка имеет шестнадцатеричное значение 2E, точка, которая появляется между элементами, имеет 0A. Также обратите внимание, что я использую Windows 7, и при просмотре с помощью блокнота между элементами ничего не появляется - где один заканчивается, другой начинается прямо вверх.

Так есть ли способ изменить эту строку в коде, который я разместил выше, так что он действительно создает новую строку в этой части?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Есть ли какая-то причина, по которой простой join не работает для вас?

let arr = ["a", "b", "c", "d", "e", "f"];

console.log(arr); // [ 'a', 'b', 'c', 'd', 'e', 'f' ]

console.log(arr.join('\n'));
// a
// b
// c
// d
// e
// f

let text = arr.join('\n');

fs.writeFileSync('modified.txt', text, "utf8");

Если вам нужно, вы можете заменить \n на \r\n в соединении, как подсказывает @Saif, но мне, кажется, нет необходимости, возможно, vscode сделает это автоматически для меня. Я на машине с Windows.

0 голосов
/ 02 июля 2018

В Linux \n представляет новую строку.

Два символа вместе \r\n представляют новую строку в Windows.

Попробуйте заменить \n на \r\n в обоих операторах write внутри index.js файла модуля.

Эти точки представляют непечатные символы. В то время как обычная точка . FULL STOP (U + 002E) представлена ​​2E.

Дополнительная информация: https://en.wikipedia.org/wiki/Newline

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...