複数行を持つ「String 型の文字列」に対し、重複した行を削除します。
第一引数に指定されたString型の文字列から、重複行を削除します。 (※重複判定の対象は「**改行コードを除く文字列」**であり、行末の改行コードも合わせて削除されます)
console.log(deleteDuplicateLine('aaa\naaa')); // "aaa"
改行コードは、"CRLF", "CR", "LF" のいずれかも対応します。
console.log(deleteDuplicateLine('@aaa\n@aaa\r@aaa\r\n@aaa')); // "@aaa"
重複行は前方から検索していき、マッチした行から削除していきます(つまり、残されるのは一番最後に存在する重複行です)。
console.log(deleteDuplicateLine('@aaa\n@bbb\n@ccc\n@aaa\n@ddd\n@bbb\n@eee\n@aaa')); // "@ccc\n@ddd\n@bbb\n@eee\n@aaa"
RegExp Lookbehind Assertions とは日本語で「後読み」と呼ばれる機能であり、「消費済の文字列に後からマッチさせる」性質があります。 「後読み」は2018/01/28現在、次の状況です。
- ECMAScript 2018 では stage 4 (ECMAScriptへ取り込まれる準備が完了したことを示す状態)で定義されていますが、ECMAScript 2018 はまだ正式版ではありません
- Google Chrome 62 で使用できます(先行仕様の実装)
- Firefox, Safari, IE11, Microsoft Edge で使用できません