Eu tenho duas variáveis e preciso inserir string b
em string a
no ponto representado por position
. O resultado que estou procurando é "Quero uma maçã". Como posso fazer isso com JavaScript?
var a = 'I want apple';
var b = ' an';
var position = 6;
javascript
sami
fonte
fonte
var output = [a.slice(0, position + 1), b, a.slice(position)].join('');
dar aos OPs "Quero uma maçã", em vez de "Quero uma maçã".Editar: substituído
.substr
por.substring
porque.substr
agora é uma função herdada (por https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr )fonte
String.prototype.substr
está obsoleto agora. developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/…substring
neste caso, é uma substituição directa para o obsoletosubstr
, então a resposta é:var output = a.substring(0, position) + b + a.substring(position);
..substring
Você pode adicionar esta função à classe de string
para que você possa usá-lo em qualquer objeto string:
fonte
O uso de literais de seqüência de caracteres ES6 seria muito mais curto:
fonte
Talvez seja ainda melhor se você determinar a posição usando indexOf () assim:
então chame a função assim:
Observe que eu coloquei um espaço após o "an" na chamada de função, em vez de na declaração de retorno.
fonte
A biblioteca Underscore.String tem uma função que insere
igual a
fonte
experimentar
Mostrar snippet de código
ou solução regexp
Mostrar snippet de código
fonte
Isso seria mais lento, mas cuidará da adição de espaço antes e depois do an. Além disso, você terá que alterar o valor da posição (para 2, agora é mais intuitivo)
fonte
Conserto rápido! Se você não quiser adicionar um espaço manualmente, faça o seguinte:
(edit: vejo que isso é realmente respondido acima, desculpe!)
fonte
Se o lookback do ES2018 estiver disponível , mais uma solução de regexp, que o utiliza para "substituir" em uma posição de largura zero após o caractere N-ésimo (semelhante ao do @Kamil Kiełczewski, mas sem armazenar os caracteres iniciais em um grupo de captura):
Mostrar snippet de código
fonte
Bem, apenas uma pequena alteração, porque a solução acima é exibida
ao invés de
Para obter a saída como
use o seguinte código modificado
fonte