文字列の複数の同じ単語を別の単語に置き換えたいと考えています。例えば文字列の複数の同じ単語を別の単語に置き換える方法
、
"What is your %s name and %s name"
は私が'last'
で'first'
と第二'%s'
との最初の'%s'
を交換したいです。
文字列の複数の同じ単語を別の単語に置き換えたいと考えています。例えば文字列の複数の同じ単語を別の単語に置き換える方法
、
"What is your %s name and %s name"
は私が'last'
で'first'
と第二'%s'
との最初の'%s'
を交換したいです。
置換する最初の引数として文字列を使用すると、1が置換されます。ここ
var s = "What is ... ";
var r = s.replace("%s", "first")
.replace("%s", "last");
さらに詳しい情報:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
私は、これはきれいかもしれないと思う:
['first', 'last'].forEach(function(tag) { x = x.replace('%s', tag); })
xはあなたに代わりに使用する文字列です。
String#replace
を使用し、%s
の代わりにコールバックとしてArray#shift
を使用できます。
このソリューションでは、置換の項目が見つかった場合は、コールごとに配列からの値を提供するため、shift
が使用されます。通常、文字列または関数は、replace
の2番目のパラメータとして必要です。この提案では、置換のためにバインドされた配列を持つshift
が使用されています。
Function#bind
は、バインドされたオブジェクトで関数を返します。
bind()
方法が呼び出されると、新しい関数が呼び出されたときに提供されるそのこのキーワードは、任意の前の引数の指定された配列と、与えられた値に設定されている、新たな機能を作成します。私は丁重に反対するOPのような初心者のために
var s = "What is your %s name and %s name?",
t = s.replace(/%s/g, [].shift.bind(['first', 'last']));
console.log(t);
@dv、コメントしますか? –
それは私ではありませんでしたが、あなたの答えはこの方法が何であるかについての説明を使用することができます。どのように 'func.bind()'が動作するのかについてはhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind –
@JohnHascall、これは今すぐ説明した。 –
。 –
OPは回答か教育を探していましたか? – rasmeister
これはどうすれば簡単にできますか? – sweaver2112