1

私はjavascriptで次のスクリプトを持っています

var idText;
var idText1;
idText = "This_is_a_test";
idText1 = idText.replace(/_/g, " ");
alert(idText1);

idText1 を表示すると、すべてのアンダースコアが置き換えられ、元のスペースに挿入されます。ただし、最初のアンダースコアを保持しようとしているため、「This_is a test」と表示されます。これはまったく可能ですか?

4

1 に答える 1

5

それは確かに可能です。ここに1つのオプションがあります:

var n = 0;
idText1 = idText.replace(/_/g, function($0) {
    n += 1;
    return n === 1 ? $0 : " ";
});

これは、一致ごとにカウンターをインクリメントする置換用のコールバックを使用し、そのカウンターの値をチェックして最初の一致を元のテキストに置き換えます。

于 2013-10-28T19:32:03.783 に答える