如何在JavaScript中编写不区分大小写的代码?

时间:2018-10-09 16:50:06

标签: javascript ignore-case

在我的项目中,我需要注意不区分大小写的内容,而且我不知道如何在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来做,但是没有用,你能解释一下为什么吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

只需接受输入,并用String.toLowerCase()String.toUpperCase()将其强制为小写或大写,然后将其与相同的大小写字符串进行比较:

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

答案 2 :(得分: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()是String的函数,而不是数组的函数。并且除非以后要在每个字符串上分别调用它,否则可能最快地将其放在一个位置,如下所示:

chunk.replace(/^\s*[\r\n]/gm,"").toLowerCase().split(/\s+/).forEach(function (s) {
   // function here
});