使用Node.js'fs.readFile()返回字符串出现的行
Use Node.js' fs.readFile() to return the line in which a string appears
我正在一个n-gram(约100万行)的大型外部文件中搜索特定字符串的实例,并希望能够返回该字符串出现的文件中的整行。想知道这是否可能以及如何可能。这是我目前的代码:
composeLines = function(importantWords, cb) {
var word = importantWords.shift();
fs.readFile("./w5_.txt", function(err, cont) {
if (err) throw err;
console.log("String"+(cont.indexOf(word)>-1 ? " " : " not ")+"found");
cb(importantWords);
});
};
有了这个代码,我可以确定文件w5_.txt
是否包含一些字符串,这很好,但我需要能够获得它所属的n-gram。例如,搜索"设计"会从文件中返回n-gram"设计的一部分"。
如有任何帮助,我们将不胜感激。
一个选项是使用正则表达式:
// Make sure `word` is properly escaped first
// 'm' allows '^' and '$' to match line boundaries or
// start and beginning of the input (respectively)
var re = new RegExp('^.*' + word + '.*$', 'm');
var m = re.exec(cont);
if (m)
console.log('Word %j found on line: %j', word, m[0]);
else
console.log('Word %j not found', word);
由于有数百万行,您应该以某种方式逐行读取:
var word = importantWords.shift();
var matchCount = 0;
var lineCount = 0;
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream('file.in')
});
lineReader.on('line', function (line) {
lineCount++;
if(-1 < line.indexOf(word)){
console.log(line);
matchCount++;
}
});
相关文章:
- PHP strtotime()为JavaScript日期字符串返回false
- 如何将表单数据传递给PHP并将json字符串返回给Javascript
- 解析JSON字符串返回未定义的结果
- Javascript:解析csv中的字符串返回NaN(不是数字)
- 使用$se.trustAsHtml呈现字符串返回未定义的结果
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- 函数:根据字符串中是否存在子字符串返回 True/False
- 如何使用 JavaScript 区分布尔值和字符串返回值
- 将 React 的方法 'return' 作为字符串返回
- 调用不带括号的函数会将整个函数作为字符串返回
- 如何在 ajax 调用中接受来自控制器的字符串返回
- Jquery - 匹配动态日期字符串返回使用长度的匹配量
- json_encode使用 jquery.get() 发布数据时将数组作为字符串返回
- 缓冲区中的nodejs解码字符串返回多行字符串
- 如何将关联数组键作为字符串返回
- python's mechanize和forms:javascript字符串返回
- 将呈现的ejs视图作为服务内的html字符串返回
- CSV文件作为单个字符串返回
- jQuery中的HTML字符串返回错误