Я сделал такой код:

var fs = require('fs');
var str = fs.readFileSync('input.txt', 'utf8');

str.split(/\s+/).forEach(function (s) {
    return console.log(
    s === 'bob'
        ? 'boy'
        : s === 'alicia'
        ? 'girl'
        : s === 'cookie'
        ? 'dog'
        : 'unknown');
});

Но в моем входном файле есть место, и я не хочу, чтобы мой код учитывал это. Мой входной файл:

cat
bob
alicia
shirley
cookie


thomas
rat`

Итак, как я могу написать код, чтобы игнорировать пробел в моем входном файле?

-1
Shirley Truffier-Blanc 8 Окт 2018 в 19:20

2 ответа

Лучший ответ

Пожалуйста, посмотрите на код ниже

function removeEmptyLines(str) {
  const arrayOfLines = str.split("\n"); // Remove empty lines from the string which leaves "" in the returned array
  const filtered = arrayOfLines.filter(line => line !== ""); // filter the array and remove all the empty strings
  const joined = filtered.join(" "); // form a single string
  return joined; // return filtered array
}
0
Siyavash 8 Окт 2018 в 16:49

Прежде всего, если вы console.log(str.split(/\s+/)), вы получите

[ 'cat', 'bob', 'alicia', 'shirley', 'cookie', 'thomas', 'rat`' ]

Так как все уже сказали, /\s+/ фактически удалит пробелы

@JuanCaicedo ваше решение не работает, извините, я пробовал и между cookie и thomas есть пробелы, и код пишет неизвестно. Результат - неизвестный мальчик девочка неизвестный собака неизвестный неизвестный неизвестный поэтому после кода крысы позаботьтесь о пространстве

Вывод, который вы видите, правильный, согласно вашей логике

s === 'bob'
        ? 'boy'
        : s === 'alicia'
        ? 'girl'
        : s === 'cookie'
        ? 'dog'
        : 'unknown');

Если строка не равна bob, alicia или cookie, будет выведено значение unknown, поэтому

cat = unknown
bob = boy
alicia = girl
shirley = unknown
cookie = dog
thomas = unknown
rat` = unknown
2
Zohir Salak 8 Окт 2018 в 17:01