Tengo dos variables y necesito insertar una cadena b
en una cadena a
en el punto representado porposition
. El resultado que estoy buscando es "Quiero una manzana". ¿Cómo puedo hacer esto con JavaScript?
var a = 'I want apple';
var b = ' an';
var position = 6;
javascript
sami
fuente
fuente
var output = [a.slice(0, position + 1), b, a.slice(position)].join('');
dar a los OP "Quiero una manzana", en lugar de "Quiero una manzana".Editar: reemplazado
.substr
por.substring
porque.substr
ahora es una función heredada (por https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr )fuente
String.prototype.substr
está en desuso ahora. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…substring
en este caso es un reemplazo directo para la obsoletasubstr
, por lo que la respuesta es:var output = a.substring(0, position) + b + a.substring(position);
..substring
Puede agregar esta función a la clase de cadena
para que pueda usarlo en cualquier objeto de cadena:
fuente
Usar literales de cadena ES6 sería mucho más corto:
fuente
Tal vez sea aún mejor si determina la posición usando indexOf () de esta manera:
luego llame a la función de esta manera:
Tenga en cuenta que pongo un espacio después de "an" en la llamada a la función, en lugar de en la declaración de retorno.
fuente
La biblioteca Underscore.String tiene una función que hace Insertar
al igual que
fuente
tratar
Mostrar fragmento de código
o solución regexp
Mostrar fragmento de código
fuente
Esto sería más lento, pero se encargará de agregar espacio antes y después de la an. Además, tendrá que cambiar el valor de la posición (a 2, ahora es más intuitivo)
fuente
¡Arreglo rapido! Si no desea agregar un espacio manualmente, puede hacer esto:
(Editar: veo que esto realmente se respondió anteriormente, ¡lo siento!)
fuente
Si el lookbehind de ES2018 está disponible , una solución regexp más, que lo utiliza para "reemplazar" en una posición de ancho cero después del enésimo carácter (similar a @Kamil Kiełczewski, pero sin almacenar los caracteres iniciales en un grupo de captura):
Mostrar fragmento de código
fuente
Bueno, solo un pequeño cambio porque los resultados de la solución anterior
en vez de
Para obtener la salida como
usa el siguiente código modificado
fuente