29

これは、JavaScriptのある種の可変コンテンツです。

    <meta charset="utf-8">

    <title>Some Meep meta, awesome</title>




    <-- some comment here -->
    <meta name="someMeta, yay" content="meep">

</head>

残りのフォーマットを維持したまま、複数の改行(不明な数)を1つの改行に減らしたい。これはで行う必要がありjavascriptますregex

タブキーまたはフォーマットの保持に問題があります。

4

4 に答える 4

89

これを試して:

text.replace(/\n\s*\n/g, '\n');

これは基本的に、間に空白のみがある 2 つの改行を探します。そして、それらを単一の改行に置き換えます。グローバル フラグによりg​​、これは可能な一致ごとに繰り返されます。

編集:

単一の改行の代わりに二重の改行を残すことは可能ですか?

確かに、最も簡単な方法は、3 つの改行を探して 2 つに置き換えることです。

text.replace(/\n\s*\n\s*\n/g, '\n\n');

(何らかの理由で) 行の 1 つで空白を維持したい場合は、次のようにすることもできます。

text.replace(/(\n\s*?\n)\s*\n/, '$1');
于 2012-06-10T00:21:00.797 に答える
16
myText = myText.replace(/\n{2,}/g, '\n');​​​​​​​

デモを見る

于 2012-06-10T00:23:11.397 に答える
3

次の場合 ( <>、 (特に)などの HTML エンティティをエンコードすることを忘れないで&ください):

<pre>
&lt;head&gt;

    &lt;meta charset="utf-8"&gt;

    &lt;title&gt;Some Meep meta, awesome&lt;/title&gt;




    &lt;-- some comment here -->
    &lt;meta name="someMeta, yay" content="meep"&gt;

&lt;/head&gt;
</pre>
<pre>
</pre>​

次の JavaScript が機能します。

var nHTML = document.getElementsByTagName('pre')[0].textContent.replace(/[\r\n]{2,}/g,'\r\n');
document.getElementsByTagName('pre')[1].appendChild(document.createTextNode(nHTML));​

JS フィドルのデモ

于 2012-06-10T00:24:00.890 に答える