Я бы предпочел использовать метод Array.splice для такого рода вещей:
var str = "foo bar foo bar foo bar".split('');
str.splice(8, 7, 'newstring');
str = str.join('');
//"foo bar newstring foo bar"
Если вы хотите использовать это повторно, добавьте его в строки:
if (!String.prototype.splice)
{
String.prototype.splice = function(index, howmany, element){
var arr = this.split('');
arr.splice(index, howmany, element);
return arr.join('');
};
}
Конечно, это простой пример, который обрабатывает только один вставленный элемент. Splice для массивов обрабатывает несколько элементов, но в любом случае строки просто объединяются, поэтому предоставляется один элемент.
Используя этот метод, вы можете вызвать:
a = "foo bar foo bar foo bar".splice( 8, 7, 'newstring' );
//a is now 'foo bar newstring foo bar'