我尝试使用节点js.ss.sss中的线路读取行,但我怀疑如何仅使用节点js获取条件内容(如果,for,for,for(。
data.js
const fs = require('fs')
const path = require("path");
const file_path = path.resolve('./sample')
const check_console = require('./tests_helper')
check_console.files_paths(file_path).then(result =>console.log(result))
.catch(error =>console.log(error))
file.js
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(files[i])
});
lineReader.on('line', function (line) {
console.log("Line of Code "+line)
});
我获得了输出
code console.log('hai'(
代码行
code console.log('hai'(
代码行
代码行,如果(10 == 10(
代码行{
代码行
代码行}
,但我想要输出
代码行,如果(10 == 10(
代码行{
代码行
代码行}
您可以使用"string".includes("substring");
方法检查该子字符串是否存在。我已经为您的问题准备了快速逻辑。line.includes("if")
将检查是否存在一个子字符串以及我对维护卷发括号的其他条件检查。
const fs = require('fs');
const readline = require('readline');
const r1 = readline.createInterface({
input: require('fs').createReadStream(__dirname + '/test.js')
});
found = false;
curlbrace = 0;
r1.on('line', function (line) {
if (line.includes("if")) {
found = true; //setting flag true if found search string
}
if (found && line.includes("{")) {
curlbrace++; //incrementing if breace is started
}
if (found && line.includes("}")) {
curlbrace--; //decrementing if brace is ended
}
if (found && curlbrace >= 0) {
console.log(line); //console the searched result
if (curlbrace == 0) {
found = false; //setting false to prevent it to show other contents
}
}
});