如何在另一个字符串的特定索引处插入一个字符串?

 var txt1 = "foo baz"

假设我想在“foo”之后插入“bar”,我该如何实现呢?

我想到了substring(),但一定有一个更简单更直接的方法。


当前回答

我们可以同时使用子字符串和切片方法。

String.prototype.customSplice = function (index, absIndex, string) {
    return this.slice(0, index) + string+ this.slice(index + Math.abs(absIndex));
};


String.prototype.replaceString = function (index, string) {
    if (index > 0)
        return this.substring(0, index) + string + this.substr(index);

    return string + this;
};


console.log('Hello Developers'.customSplice(6,0,'Stack ')) // Hello Stack Developers
console.log('Hello Developers'.replaceString(6,'Stack ')) //// Hello Stack Developers

子字符串方法的唯一问题是它不能与负索引一起工作。它总是从第0位开始取字符串下标。

其他回答

我知道这是一个古老的话题,然而,这里有一个真正有效的方法。

var tn = document.createTextNode("I am just  to help")
t.insertData(10, "trying");

这样做的好处在于它强制了节点内容。因此,如果该节点已经在DOM上,则不需要使用任何查询选择器或更新innerText。这些变化将反映由于其约束力。

如果需要字符串,只需访问节点的文本内容属性。

tn.textContent
#=> "I am just trying to help"

使用切片

你可以使用slice(0,index) + str + slice(index)。或者您可以为它创建一个方法。

String.prototype.insertAt =函数(索引,str){ 返回this.slice(0,index) + STR + this.slice(index) } console.log (" foo栏”。insertAt(4,'baz ')) //foo baz bar

字符串的拼接方法

你可以split()主字符串并添加,然后使用普通的splice()

String.prototype.splice = function(index,del,...newStrs){ let str = this.split(''); str.splice(index,del,newStrs.join('') || ''); return str.join(''); } var txt1 = "foo baz" //inserting single string. console.log(txt1.splice(4,0,"bar ")); //foo bar baz //inserting multiple strings console.log(txt1.splice(4,0,"bar ","bar2 ")); //foo bar bar2 baz //removing letters console.log(txt1.splice(1,2)) //f baz //remving and inseting atm console.log(txt1.splice(1,2," bar")) //f bar baz

在多个索引上应用splice()

该方法接受一个数组,数组中的每个元素表示一个splice()。

String.prototype.splice = function(index,del,...newStrs){ let str = this.split(''); str.splice(index,del,newStrs.join('') || ''); return str.join(''); } String.prototype.mulSplice = function(arr){ str = this let dif = 0; arr.forEach(x => { x[2] === x[2] || []; x[1] === x[1] || 0; str = str.splice(x[0] + dif,x[1],...x[2]); dif += x[2].join('').length - x[1]; }) return str; } let txt = "foo bar baz" //Replacing the 'foo' and 'bar' with 'something1' ,'another' console.log(txt.splice(0,3,'something')) console.log(txt.mulSplice( [ [0,3,["something1"]], [4,3,["another"]] ] ))

以溶液为例。我用简单的格式写了这段代码:

const insertWord = (sentence,word,index) => {
    var sliceWord = word.slice(""),output = [],join; // Slicing the input word and declaring other variables
    var sliceSentence = sentence.slice(""); // Slicing the input sentence into each alphabets
    for (var i = 0; i < sliceSentence.length; i++) 
           {
        if (i === index) 
               { // checking if index of array === input index
            for (var j = 0; j < word.length; j++) 
                       {   // if yes we'll insert the word
                output.push(sliceWord[j]); // Condition is true we are inserting the word
                       }
            output.push(" "); // providing a single space at the end of the word
                 }
        output.push(sliceSentence[i]);  // pushing the remaining elements present in an array
            }
    join = output.join(""); // converting an array to string
    console.log(join)
    return join;
}

如果有人正在寻找一种在字符串的多个下标处插入文本的方法,请尝试以下方法:

String.prototype.insertTextAtIndices = function(text) {
    return this.replace(/./g, function(character, index) {
        return text[index] ? text[index] + character : character;
    });
};

例如,你可以使用它在字符串的特定偏移处插入<span>标签:

var text = {
    6: "<span>",
    11: "</span>"
};

"Hello world!".insertTextAtIndices(text); // returns "Hello <span>world</span>!"
my_string          = "hello world";
my_insert          = " dear";
my_insert_location = 5;

my_string = my_string.split('');  
my_string.splice( my_insert_location , 0, my_insert );
my_string = my_string.join('');

https://jsfiddle.net/gaby_de_wilde/wz69nw9k/