我有两个变量,需要将字符串b插入字符串a,在position表示的点上。我想要的结果是“我想要一个苹果”。我如何用JavaScript做到这一点?

var a = 'I want apple';
var b = ' an';
var position = 6;

当前回答

如果你像这样使用indexOf()来确定位置,可能会更好:

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");

注意,我在函数调用中的“an”后面加了一个空格,而不是在return语句中。

其他回答

下划线。String库有一个插入函数

Insert (string, index, substring) =>字符串

像这样

insert("I want apple", 6, " an");
// => "I want an apple"

如果ES2018的回溯可用,还有一个regexp解决方案,使用它来“替换”第n个字符后的零宽度位置(类似于@Kamil kiezczewski的方法,但没有将初始字符存储在捕获组中):

"I want apple".replace(/(?<=^.{6})/, " an")

var a =“我想要苹果”; Var b = " an"; Var位置= 6; var r = a.replace(新RegExp (`(?<=^.{${ 位置}})),b); console.log (r); console.log(“我想要苹果”.replace(/(? < = ^{6}) /,“一个”);

如果你像这样使用indexOf()来确定位置,可能会更好:

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");

注意,我在函数调用中的“an”后面加了一个空格,而不是在return语句中。

您可以将此函数添加到字符串类

String.prototype.insert_at=function(index, string)
{   
  return this.substr(0, index) + string + this.substr(index);
}

所以你可以在任何字符串对象上使用它:

var my_string = "abcd";
my_string.insertAt(1, "XX");
var array = a.split(' '); 
array.splice(position, 0, b);
var output = array.join(' ');

这样会慢一些,但是会考虑到在an前后增加的空间 另外,你还需要改变position的值(改为2,现在更直观了)