1回の置換呼び出しで複数の文字を置換する 質問する

1回の置換呼び出しで複数の文字を置換する 質問する

すべての「_」をスペースに置き換え、「#」を何もない/空に置き換える必要があります。

var string = '#Please send_an_information_pack_to_the_following_address:';

私はこれを試しました:

string.replace('#','').replace('_', ' ');

このようにコマンドを連鎖させるのは好きではありません。 1 つで実行する別の方法はありますか?

ベストアンサー1

OR演算子(|)を使用します。

var str = '#this #is__ __#a test###__';

console.log(
  str.replace(/#|_/g, '') // "this is a test"
)

文字クラスを使用することもできます:

str.replace(/[#_]/g,'');

フィドル

ハッシュを1つに置き換え、アンダースコアを別のものに置き換えたい場合は、次のように連鎖させるだけです。

function allReplace(str, obj) {
  for (const x in obj) {
    str = str.replace(new RegExp(x, 'g'), obj[x]);
  }
  return str;
};


console.log(
  allReplace( 'abcd-abcd', { 'a': 'h', 'b': 'o' } ) // 'hocd-hocd'
);

しかし、なぜチェーンしないのでしょうか? 何も悪いことはないと思います。

おすすめ記事