-1

在我的项目中,我需要注意不区分大小写,而且我不知道如何在 JavaScript 中编写类似的代码。

如果我在终端上写,我需要让我的代码理解同样的事情:

`BOB
bob 
Bob`

我的代码:

       #!/usr/bin/env node

let chunk = "";

process.stdin.on("data", data => {
    chunk += data.toString();
});

process.stdin.on("end", () => {
    chunk.replace(/^\s*[\r\n]/gm,"").split(/\s+/).ignoreCase.forEach(function (s) {
        process.stdout.write(
        s === 'bob'
        ? 'boy \n'
        : s === 'alicia'
           ? 'girl\n'
           : s === 'cookie'
               ? 'dog \n'
               : 'unknown \n');
    });
});

我需要显示的结果是:

`boy
boy
boy`

我试着用它做,ignoreCase但它不起作用,你能解释一下为什么吗?

4

3 回答 3

2

只需String.prototype.toLowerCase在输入时使用所有字符串,以便在比较它们时只有一种方式可以表示它们。

process.stdin.on("data", data => {
  chunk += data.toString().toLowerCase();
});
于 2018-10-09T16:53:21.180 回答
1

RegExp.prototype.ignorecase属性保存一个布尔值,用于判断是否为正则表达式设置了“i”标志。这不是一个函数,也不对表达式或字符串提供任何操作操作。

请参阅:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase

您可能想要考虑做的是调用类似于String.prototype.toLowerCase()将字符串转换为小写的函数。

编辑:如果有帮助,我认为您可以将 toLowerCase() 放在 split() 之前,因为 toLowerCase() 是字符串的函数,而不是数组的函数。除非您想稍后在每个字符串上单独调用它,否则在一个地方执行它可能是最快的,如下所示:

chunk.replace(/^\s*[\r\n]/gm,"").toLowerCase().split(/\s+/).forEach(function (s) {
   // function here
});
于 2018-10-09T16:55:54.810 回答
1

只需获取输入并使用 or 将其强制为所有小写或大写String.toLowerCase()String.toUpperCase()然后将其与相同的大小写字符串进行比较:

console.log("test" === "Test"); // false
console.log("test" === "Test".toLowerCase()); // true
console.log("TeSt".toUpperCase() === "Test".toUpperCase()); // true

于 2018-10-09T16:54:07.650 回答