3

文字列から先頭と末尾の空白と改行を削除しようとしています。改行は\n(2 つの別個の文字、スラッシュとn) のように記述されます。つまり、これは文字列リテラルであり、CR LF 特殊文字ではありません。

たとえば、次のようになります。

\n \nRight after this is a perfectly valid newline:\nAnd here is the second line. \n

これになるはずです:

Right after this is a perfectly valid newline:\nAnd here is the second line.

私はこの解決策を思いつきました:

text = text
        .replace(/^(\s*(\\n)*)*/, '') // Beginning
        .replace(/(\s*(\\n)*)*$/, '') // End

RegexPalによると、これらのパターンはうまく一致します。

ただし、2 番目のパターン (文字列の末尾に一致させる) には非常に長い時間がかかります。Chrome では、段落が 2 つしかなく、末尾にスペースがいくつかある文字列で約 3​​2 秒かかります。最初のパターンは、同じ文字列で非常に高速 (ミリ秒) です。

これを示す CodePen を次に示します

なぜそんなに遅いのですか?これについてもっと良い方法はありますか?

4

2 に答える 2