私は2つのvarsを持ち、この位置にbを挿入する必要があります。私が探している結果は、 "私はリンゴがほしい"です。 jqueryやjavascriptでこれをどうすればできますか?上記の溶液の出力原因ほんの少しの変更」別のストリングの位置xにストリングを挿入する
var a = "I want apple";
var b = "an";
var position = 6;
私は2つのvarsを持ち、この位置にbを挿入する必要があります。私が探している結果は、 "私はリンゴがほしい"です。 jqueryやjavascriptでこれをどうすればできますか?上記の溶液の出力原因ほんの少しの変更」別のストリングの位置xにストリングを挿入する
var a = "I want apple";
var b = "an";
var position = 6;
var a = "I want apple";
var b = "an";
var position = 6;
var output = [a.slice(0, position), b, a.slice(position)].join('');
console.log(output);
var output = a.substr(0, position) + b + a.substr(position);
インサート(文字列、インデックス、サブストリング)=>列
を行う機能を有しています。 //jsperf.com/javascript-string-splice、この回答は、jAndyのものより** 640倍高速**です。 –
var array = a.split(' ');
array.splice(position, 0, b);
var output = array.join(' ');
これは遅くなるだろうが、前のスペースの追加の世話をします。また 後、あなたは位置の値を変更する必要があります
(2には、それは今より直感的です)たぶん
var myString = "abcd";
myString.insertAt(1, "XX");
私は:あなたは任意の文字列オブジェクト上でそれを使用することができることを
String.prototype.insertAt=function(index, string) {
return this.substr(0, index) + string + this.substr(index);
}
ので、文字列クラスにこの機能を追加することができます
function insertString(a, b, at)
{
var position = a.indexOf(at);
if (position !== -1)
{
return a.substr(0, position) + b + a.substr(position);
}
return "substring not found";
}
は、このような関数を呼び出す:
insertString("I want apple", "an ", "apple");
注意を私は「の後にスペースを入れていることを、あなたはのindexOf()このようなを使用して位置を決定した場合tはさらに良いです"関数の呼び出しではなく、returnステートメントで。
これは尋ねられたものではありません。このような場合でも、 "at"部分文字列が複数現れた場合には、これはうまくいかないでしょう – elachell
Underscore.Stringライブラリは@junkyspace HTTPSによるよう
insert("Hello ", 6, "world");
// => "Hello world"
なぜこの回答は下降しましたか? – svarog
長い文字列の場合、このソリューションはnickfのソリューションよりも高速です(コピーが少ないため)。 – pts
このソリューションはそれほど高速ではありません。私はこれについて興味があり、jsperfを走らせました。これは、将来これを読む人にとってのメモです。 http://jsperf.com/javascript-string-splice。最新のFF/Chrome/IE10/IE9でテスト済みです。私は、明快さとパフォーマンスの両方のために、これに対してlean nickfのアプローチを使用します。 – junkyspace
まあ、それは非常に可能です。ここでの答えは、ほぼ3歳で、そのあとのブラウザとバージョンの大部分は、* Array * join(特にIE)の方が実際に速く実行されました。 – jAndy