У меня есть две переменные, и мне нужно вставить строку b
в строку a
в точке, представленной position
. В результате я ищу "Я хочу яблоко". Как я могу сделать это с помощью JavaScript?
var a = 'I want apple';
var b = ' an';
var position = 6;
У меня есть две переменные, и мне нужно вставить строку b
в строку a
в точке, представленной position
. В результате я ищу "Я хочу яблоко". Как я могу сделать это с помощью JavaScript?
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.substring(0, position) + b + a.substring(position);
Изменение: заменил .substr
на .substring
потому что .substr
теперь является устаревшей функцией (согласно https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr)
Вы можете добавить эту функцию в строковый класс
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");
Может быть, это даже лучше, если вы определяете позицию, используя 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.
Библиотека Underscore.String имеет функцию вставки
вставить (строка, индекс, подстрока) => строка
вот так
insert("Hello ", 6, "world");
// => "Hello world"
Использование строковых литералов 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'
var array = a.split(' ');
array.splice(position, 0, b);
var output = array.join(' ');
Это будет медленнее, но позаботится о добавлении пространства до и после Кроме того, вам нужно будет изменить значение позиции (до 2, это более интуитивно понятно)
Ну просто небольшое изменение, потому что вышеупомянутое решение выводит
"Я хочу аналог"
вместо
"Я хочу яблоко"
Чтобы получить вывод как
"Я хочу яблоко"
используйте следующий измененный код
var output = a.substr(0, position) + " " + b + a.substr(position);
Быстрая починка! Если вы не хотите добавлять пробел вручную, вы можете сделать это:
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);
пытаться
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);