如何忽略JavaScript中的某些空间?

时间:2018-10-08 16:20:02

标签: javascript node.js

我做了这段代码:

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`

那么我该如何编码,以忽略输入文件中的空格?

2 个答案:

答案 0 :(得分:2)

首先,如果您会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');

如果字符串不等于bobaliciacookie,则它将输出未知

cat = unknown
bob = boy
alicia = girl
shirley = unknown
cookie = dog
thomas = unknown
rat` = unknown

答案 1 :(得分:0)

请查看下面的代码

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
}