如何检查我搜索的确切字符串是否列在文件中?

时间:2016-07-28 09:05:34

标签: node.js

我正在尝试编写一个函数来搜索文件中的给定字符串(精确字符串),并提示它是否在node.js中的该文件中列出。我已经尝试了下面的脚本但它列出了字符串,即使我的搜索字符串在文件中列为子字符串。 我有message.txt,其中包括以下单词:

bat
bait 
can 
cat

我在文件中搜索字符串的脚本是

var fs = require('fs');
fs.readFile('message.txt', function (err, data) {
    var searchstr = "bat";
      if (err) throw err;
        if(data.indexOf(searchstr) < 0){
               console.log("String not found");
      }
        else{
            console.log("String found!");
        }
});

所以,在这里,我正在使用bat搜索searchstrat显然会输出&#34; String found&#34;。现在,问题是,如果我将bat作为搜索字符串,它将输出为&#34; String found&#34;因为&#34; at&#34;是文件的catat的子字符串。 但是,我喜欢输出的功能&#34; String not found&#34;当我搜索$('#container').find('#lastEl').prev().prevAll().remove()时。

1 个答案:

答案 0 :(得分:0)

您可以在此处使用正则表达式:

/\bat\b/

at与任何单词边界相匹配。然后,您需要稍微更改一下代码:

var fs = require('fs');
fs.readFile('message.txt', function (err, data) {
    var searchstr = "bat";
    var pattern = new RegExp("\b" + searchstr + "\b");
    if (err) throw err;

    if (pattern.test(data) === false) {
        console.log("String not found");
    } else {
        console.log("String found!");
    }
});

根据您的具体要求,您可能需要更改正则表达式。例如,您可能希望测试由空格包围的at/\sat\s/