#javascript #node.js #typescript
#javascript #node.js #typescript
Вопрос:
Я использую модуль Node readline для чтения файлов построчно, одновременно проверяя определенные условия в каждой строке. Однако файлы несовместимы при разрывах строк. Иногда строка переходит в следующую строку, в результате чего условие if не перехватывается. Есть ли способ проверить следующую строку, находясь в текущей строке? Очень признателен за любую помощь. Спасибо!
const fs = require('fs');
const readline = require('readline');
async function processLineByLine() {
const fileStream = fs.createReadStream('input.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
// Note: we use the crlfDelay option to recognize all instances of CR LF
// ('rn') in input.txt as a single line break.
for await (const line of rl) {
// Each line in input.txt will be successively available here as `line`.
if(line.includes('abc') amp;amp; nextline.includes('def')) {
}
}
processLineByLine();
Пример ввода
однострочный
<ref href="sample.txt">
двухстрочный
<ref
href="sample.txt">
Комментарии:
1. Это очень обратный вопрос, поскольку разрыв строки .. т.Е. Текст, простирающийся от одной строки до следующей строки, сам по себе является НОВОЙ СТРОКОЙ. не просто продолжалась одна и та же строка. если ваш текст занимает несколько строк, вам нужно выполнить более тщательный поиск, а не просто проверять одну строку
2. согласен. однако файлы, которые я получаю, несовместимы с разрывами строк. Некоторые будут в одной строке, некоторые — в двух. Однако мне нужно проверить все в этой одной или двух строках, чтобы выполнить операцию.
3. Возможно, приведите пример ввода. Покажите, как выглядят разбитые и неразрывные строки прямо в вашем вопросе.
4. тогда поиск построчно не является ответом, буферизуйте несколько строк или просто прочитайте весь файл сразу
5. обновлено с помощью примера ввода.
Ответ №1:
Вы могли бы сделать что-то вроде этого
let previousLine;
for await (let line of rl) {
// Each line in input.txt will be successively available here as `line`.
// check if current line fulfils your conditions
// if not and previousLine has value check conditions with the 2 lines
// if not you store current line into previousLine
previousLine = line;
}