我正在尝试编写一个函数来搜索文件中的给定字符串(精确字符串),并提示它是否在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
搜索searchstr
,at
显然会输出&#34; String found&#34;。现在,问题是,如果我将bat
作为搜索字符串,它将输出为&#34; String found&#34;因为&#34; at&#34;是文件的cat
和at
的子字符串。
但是,我喜欢输出的功能&#34; String not found&#34;当我搜索$('#container').find('#lastEl').prev().prevAll().remove()
时。
答案 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/
。