464 votes

JavaScript : Comment puis-je insérer une chaîne à un index spécifique

Comment puis-je insérer une chaîne à un index spécifique d’une autre chaîne ?

Supposons que je veux insérer « bar » après le « foo » Comment puis-je atteindre qui ? J’ai pensé de sous-chaîne, mais il doit y avoir une plus simple manière franche plus ?

595voto

Tim Down Points 124501

L'insertion à un index spécifique (plutôt que, par exemple, au premier caractère d'espace) doit utiliser une chaîne de découpage / sous-chaîne:

 var txt2 = txt1.slice(0, 3) + "bar" + txt1.slice(3);
 

298voto

user113716 Points 143363

Vous pourriez prototype vos propres `` en chaîne.

Exemple : http://jsfiddle.net/patrick_dw/eXjBN/2


EDIT : Modifié pour faire en sorte que `` est une valeur absolue.

159voto

Base33 Points 1053

Essaye ça. Voici une méthode que j'ai écrite et qui se comporte comme toutes les autres langages de programmation.

 String.prototype.insert = function (index, string) {
  if (index > 0)
    return this.substring(0, index) + string + this.substring(index, this.length);
  else
    return string + this;
};
 

Exemple d'utilisation:

 var something = "How you?";
something = something.insert(3, " are");
 

Simples.

Référence: http://coderamblings.wordpress.com/2012/07/09/insert-a-string-at-a-specific-index/

92voto

Erez Points 66

Juste faire de la fonction suivante:

function insert(str, index, value) {
    return str.substr(0, index) + value + str.substr(index);
}

et puis l'utiliser comme ça:

alert(insert("foo baz", 4, "bar "));

Sortie: foo bar baz

Il se comporte exactement comme le C# (Dièse) de la Chaîne.Insert(int startIndex, de la chaîne de valeur).

REMARQUE: Cette fonction insert insère la chaîne de valeur (troisième paramètre) avant l'entier spécifié index (deuxième paramètre) dans la chaîne de caractères str (premier paramètre), puis retourne la nouvelle chaîne sans changer str!

19voto

VisioN Points 62518

Encore une autre solution juste pour le plaisir :

 var index = 4,
    word  = "bar ";

"foo baz".replace(/./g, function(v, i) {
    return i === index - 1 ? v + word : v;
});  // --> foo bar baz
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X