テキストエリアからテキストを取得し、変数に入れ、すべての改行 (\n\r) を "@@" に変更したいと考えています。
何らかの理由でうまくいきません。
助けてください、ここにフィドルがあります:http://jsfiddle.net/HK82q/
$("#go").click(function(){
curtext = $("textarea").val();
curtext = curtext.replace("\n\r\n","@@");
alert(curtext);
});
テキストエリアからテキストを取得し、変数に入れ、すべての改行 (\n\r) を "@@" に変更したいと考えています。
何らかの理由でうまくいきません。
助けてください、ここにフィドルがあります:http://jsfiddle.net/HK82q/
$("#go").click(function(){
curtext = $("textarea").val();
curtext = curtext.replace("\n\r\n","@@");
alert(curtext);
});
「改行」は、次の 3 つのいずれかを意味します。
\r
(キャリッジ リターン)、古い Mac コンピューターで使用されます。\n
(改行)、Linux、Unix、および新しいMacで使用されていると思います\r\n
(CRLF)、Windows で使用したがって、3 つのケースすべてを処理する必要があります。これは、複数の.replace
呼び出しまたは正規表現で実行できます。
curtext = curtext.replace(/(?=[\r\n])\r?\n?/g,"@@");
この正規表現は、最初に CR または LF のいずれかが先にあることをアサートし、次にオプションでそれらを一致させて、3 つのオプションすべてを許可することによって機能します。アサーションは、「何もない」が一致しないことを保証します。
\n
に続いて に会うことを期待しています\r
。それは間違っています。どちらか一方を期待する必要があります。次に、関数の正規表現は、ではなくでreplace
囲む必要があります。文字列ではありません。最後に、修飾子を追加します (グローバルの略で、最初のものだけでなく、すべてのオカレンスを置き換えます)。/
"
g
curtext = curtext.replace(/[\n\r]/g,"@@");
更新されたフィドルは次のとおりです。http://jsfiddle.net/HK82q/1/