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

How we can code the case insensitive in JavaScript?

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

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

1
2
3
`BOB
bob
Bob`

我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
       #!/usr/bin/env node

let chunk ="";

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

process.stdin.on("end", () => {
    chunk.replace(/^\s*[

]/gm,"").split(/\s+/).ignoreCase.forEach(function (s) {
        process.stdout.write(
        s === 'bob'
        ? 'boy
'

        : s === 'alicia'
           ? 'girl
'

           : s === 'cookie'
               ? 'dog
'

               : 'unknown
'
);
    });
});

我需要显示的结果是:

1
2
3
`boy
boy
boy`

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


只需在输入的所有字符串上使用String.prototype.toLowerCase,这样当您比较它们时,只有一种方法可以表示它们。

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


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

请参阅:https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/regexp/ignorecase

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

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

1
2
3
4
5
chunk.replace(/^\s*[

]/gm,"").toLowerCase().split(/\s+/).forEach(function (s) {
   // function here
});


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

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