1. ホーム
  2. javascript

[解決済み] 一度の置換呼び出しで複数の文字を置換する

2022-02-09 07:52:53

質問内容

とても簡単な小さな質問ですが、やり方がよくわかりません。

私は '_' のすべてのインスタンスをスペースに置き換え、'#' のすべてのインスタンスを何もない/空白に置き換える必要があります。

var string = '#Please send_an_information_pack_to_the_following_address:';

試してみました。

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

私はこのようにコマンドを連鎖させるのがあまり好きではありません。1つでできる他の方法はないのでしょうか?

どのように解決するのですか?

OR演算子( | ):

var str = '#this #is__ __#a test###__';
str.replace(/#|_/g,''); // result: "this is a test"

また、文字クラスを使うこともできます。

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

フィドル

もし、ハッシュをあるものに、アンダースコアを別のものに置き換えたい場合は、チェインするしかないでしょう。しかし、プロトタイプを追加することもできます。

String.prototype.allReplace = function(obj) {
    var retStr = this;
    for (var x in obj) {
        retStr = retStr.replace(new RegExp(x, 'g'), obj[x]);
    }
    return retStr;
};

console.log('aabbaabbcc'.allReplace({'a': 'h', 'b': 'o'}));
// console.log 'hhoohhoocc';

チェーンではダメなんですか?何も問題ないと思うのですが。