Вставка строки в позицию x другой строки

У меня есть две переменные, и мне нужно вставить строку b в строку a в точке, представленной position. В результате я ищу "Я хочу яблоко". Как я могу сделать это с помощью JavaScript?

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

Ответ 1

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

Ответ 3

Вы можете добавить эту функцию в строковый класс

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

Ответ 4

Может быть, это даже лучше, если вы определяете позицию, используя 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.

Ответ 5

Библиотека Underscore.String имеет функцию вставки

вставить (строка, индекс, подстрока) => строка

вот так

insert("Hello ", 6, "world");
// => "Hello world"

Ответ 6

Использование строковых литералов ES6 будет намного короче:

const insertAt = (str, sub, pos) => '${str.slice(0, pos)}${sub}${str.slice(pos)}';
    
console.log(insertAt('I want apple', ' an', 6)) // logs 'I want an apple'

Ответ 7

var array = a.split(' '); 
array.splice(position, 0, b);
var output = array.join(' ');

Это будет медленнее, но позаботится о добавлении пространства до и после Кроме того, вам нужно будет изменить значение позиции (до 2, это более интуитивно понятно)

Ответ 8

Ну просто небольшое изменение, потому что вышеупомянутое решение выводит

"Я хочу аналог"

вместо

"Я хочу яблоко"

Чтобы получить вывод как

"Я хочу яблоко"

используйте следующий измененный код

var output = a.substr(0, position) + " " + b + a.substr(position);

Ответ 9

Быстрая починка! Если вы не хотите добавлять пробел вручную, вы можете сделать это:

var a = "I want apple";
var b = "an";
var position = 6;
var output = [a.slice(0, position + 1), b, a.slice(position)].join('');
console.log(output);

Ответ 10

пытаться

a.slice(0,position) + b + a.slice(position)

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

var r= a.slice(0,position) + b + a.slice(position);

console.log(r);