1

これが私の機能です:

function process() {
var content = document.getElementById('content').value;
content = content.replace(/(<tt>(.*?)<tt>)/g, '$2');
document.getElementById('content').value = content;
}

ここに私のHTMLがあります:

<textarea id="content" cols="48" rows="8"></textarea><br />
<input type="button" value="Process" onclick="process()" />

サンプルコード:

<tt>hello<tt>

私の質問の目的は、「スペース」を「アンダースコア」に置き換えることができるかどうかを調べることです。たとえば、現在、上記のサンプル コードを取得して関数で実行する場合は、次のコードを省略します。

hello

このコードを実行する場合:

<tt>hel lo<tt>

関数を通じて、これはあなたの結果になります:

hel lo

私が好む結果は次のようになります。

hel_lo

スペースをアンダースコアに置き換えます。次のようなものを挿入できることに気づきました。

content = content.replace(/()/g, '_');

私の関数に、しかし、それを行ってから、以下のコードを実行する場合:

<tt>d j<tt>1 2

結果は次のようになります

d_j1_2

私が好むものの代わりに

d_j1 2

要約すると、スペースをアンダースコアに置き換えたいのですが、

<tt><tt>

タグ。ヘルプは常に高く評価されており、事前に非常に感謝しています. 私の例にもこのリンクを提供します:jsfiddle example

4

1 に答える 1

1

最初に思いついた方法は以下の通りです。

content = content.replace(/(<tt>(.*?)<tt>)/g, function(m,p1,p2) {
             return p2.replace(/ /g,"_");
          });

この.replace()メソッドは、2 番目のパラメーターでコールバックを受け入れるため、一致に対してカスタム処理を行うことができます。コールバックは一致とサブマッチをパラメーターとして受け取り、コールバックが返すものはすべて置換テキストとして使用されるため、2 番目のサブマッチだけでスペースを置き換えることができます。

デモ: http://jsfiddle.net/WVUYX/42/

于 2013-02-17T03:04:22.553 に答える