1

テキストエリアからテキストを取得し、変数に入れ、すべての改行 (\n\r) を "@@" に変更したいと考えています。
何らかの理由でうまくいきません。

助けてください、ここにフィドルがあります:http://jsfiddle.net/HK82q/

$("#go").click(function(){
 curtext = $("textarea").val();
 curtext = curtext.replace("\n\r\n","@@");
 alert(curtext);
});
4

2 に答える 2

3

「改行」は、次の 3 つのいずれかを意味します。

  • \r(キャリッジ リターン)、古い Mac コンピューターで使用されます。
  • \n(改行)、Linux、Unix、および新しいMacで使用されていると思います
  • \r\n(CRLF)、Windows で使用

したがって、3 つのケースすべてを処理する必要があります。これは、複数の.replace呼び出しまたは正規表現で実行できます。

curtext = curtext.replace(/(?=[\r\n])\r?\n?/g,"@@");

この正規表現は、最初に CR または LF のいずれかが先にあることをアサートし、次にオプションでそれらを一致させて、3 つのオプションすべてを許可することによって機能します。アサーションは、「何もない」が一致しないことを保証します。

于 2013-11-05T12:07:36.893 に答える
1

\nに続いて に会うことを期待しています\r。それは間違っています。どちらか一方を期待する必要があります。次に、関数の正規表現は、ではなくでreplace囲む必要があります。文字列ではありません。最後に、修飾子を追加します (グローバルの略で、最初のものだけでなく、すべてのオカレンスを置き換えます)。/"g

curtext = curtext.replace(/[\n\r]/g,"@@");

更新されたフィドルは次のとおりです。http://jsfiddle.net/HK82q/1/

于 2013-11-05T12:06:36.127 に答える