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