@kr_ilya

Есть ли универсальный способ занести строки текстового файла в массив?

Имеется текстовый файл
one
two
three
chetire
five
etc

Он может быть изменен в текстовом редакторе на windows и залит на ubuntu сервер по ssh. Кроме того, в него могут быть добавлены строки скриптом (nodejs).
fs.appendFileSync(Users, `${os.EOL}${text}`);//Users - файл, text - новая строка os.EOL - см.ниже

К чему это я..
Символ переноса строки в windows \r\n , а в ubuntu \n. Из-за этого у меня возникают проблемы при создании массива из строк файла.
Строки до chetire были добавлены на windows. Всё что ниже - скриптом на сервере
let fileContent = fs.readFileSync(Users, "utf8");  //Users - файл
var sList = fileContent.split(os.EOL); //os.EOL - возвращает символ переноса строки, характерный для текущей операционной системы. см. выше
console.log(sList);
//sList будет в данном случае будет содержать
    [
      'one\r',
      'two\r',
      'three\r',
      'chetire',
      'five',
      'etc'
    ]

//При этом
console.log(sList[0]); 
//Вернет в консоль one без \r

Я пробовал убирать \r с помощью item.replace(/\r?\n/g, "")
Но это ничего не дало.
Проблема еще и в том, что sList.indexOf('one'); вернет -1 из-за \r, хотя по факту должна возвращать 0
Конечно можно было бы при добавлении строк в скрипте использовать перенос \r\n и не париться, но я считаю, что это лишь поверхностный фикс, и если, например нужно будет вручную отредактировать файл на Linux, возникнет схожая проблема.

Как можно универсализировать скрипт, чтобы он работал для файлов и с винды и линукса?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
fileContent.split(/\r?\n/)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы