Вы можете обернуть логику в функцию, которая выполняет итерации по строкам заданного текста и возвращает список с индексами строк, соответствующих шаблону поиска (или точному поисковому запросу).
Затем вы можете использовать эти индексы соответствующим образом, например. удалив эту строку из исходного текста.
function findMatches(text, pattern) {
var matchingLines = [];
var allLines = text.split("\n");
for (var i = 0; i < allLines.length; i++) {
if (allLines[i].match(pattern)) {
matchingLines.push(i);
}
}
return matchingLines;
}
См, также, это short demo.
Некоторые моменты, которые следует учитывать: * В приведенном выше примере «узор» обрабатывается JS как шаблон регулярного выражения, например. «тес». будет соответствовать «test», «tess», «tes6» и т. д. Если вы хотите вместо этого провести буквальное совпадение, замените allLines[i].match(pattern)
на allLines[i].indexOf(pattern) != -1
. * Предполагается, что строки заканчиваются на «\ n». Если ваши спецификации разные, измените их соответствующим образом. * В приведенной ниже краткой демонстрации часть поиска линии и часть удаления линии разделены, что приводит к более сложному коду (ради гибкости). Если вы хотите удалить только соответствующие линии, вы можете добиться этого за один проход, например:
function removeMatches(text, pattern) {
var outputLines = [];
var inputLines = text.split("\n");
for (var i = 0; i < inputLines.length; i++) {
if (!inputLines[i].match(pattern)) {
outputLines.push(inputLines[i]);
}
}
return outputLines.join("\n");
}
Просто пройдите по линиям и проверьте каждый из них? – Bergi
Я предпочел бы более точный метод. Я думал об этом, но лучше вернусь. –
Почему вы думаете, что это будет неточно? Что вы понимаете под «правильным»? – Bergi