【问题标题】:How to make search case insensitive using nodejs?如何使用nodejs使搜索不区分大小写?
【发布时间】:2017-03-03 18:30:20
【问题描述】:

我有一个搜索功能,所以我有来自客户端 Str 的输入,如果它与文件中的内容匹配,则发送它作为响应。假设我现在在文件Lorem 中有文本,如果我从客户端搜索为lorem,由于区分大小写,它会发送空数组。如何使搜索不区分大小写?

searchService.js

var searchStr;
function readFile(str, logFiles, callback) {
        searchStr = str;
        // loop through each file
        async.eachSeries(logFiles, function (logfile, done) {
            // read file
            fs.readFile('logs/dit/' + logfile.filename, 'utf8', function (err, data) {
                if (err) {
                    return done(err);
                }
                var lines = data.split('\n'); // get the lines
                lines.forEach(function(line) { // for each line in lines
                    if (line.indexOf(searchStr) != -1) { // if the line contain the searchSt
                        results.push({
                        filename:logfile.filename,
                        value:line
                        });
                    }
                });
                // when you are done reading the file
                done();
            });

【问题讨论】:

标签: javascript node.js search


【解决方案1】:

您可以使用toLowerCase()

if (line.toLowerCase().indexOf(searchStr.toLowerCase()) != -1) { ...

【讨论】:

  • 如果我们在文件内容中有大写并且客户端发送小写字符串怎么样?
  • 你会注意到我也在line 字符串上调用了toLowerCase()
  • 太棒了!谢谢!
【解决方案2】:

您可以使用 .match(/pattern/i) 来使用正则表达式。 /i 使模式搜索不区分大小写。

if ("LOREMMMMMM".match(/Lorem/i)) console.log("Match");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2020-01-30
    • 2021-02-18
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多