指定されたテキストの行を反復処理する関数でロジックをラップし、検索パターン (または正確な検索語) に一致する行のインデックスを含むリストを返すことができます。
次に、これらのインデックスを適切に使用できます。たとえば、元のテキストからそれらの行を削除します。
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;
}
この短いデモも参照してください。
注意点: * 上記の例では、"pattern" は JS によって正規表現パターン ("tes" など) として扱われます。「test」、「tess」、「tes6」などと一致します。代わりにリテラル一致が必要な場合は、に置き換えallLines[i].match(pattern)
ますallLines[i].indexOf(pattern) != -1
。※行末は「\n」とする。仕様が異なる場合は、それに応じて変更してください。* 上記の短いデモでは、行検索部分と行削除部分が分離されているため、コードがより複雑になります (柔軟性のため)。一致する行のみを削除する場合は、次のように 1 回のパスでこれを実現できます。
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");
}