J'ai 2 vars et dois insérer b dans un à cette position. Le résultat que je recherche est "Je veux une pomme". Comment puis-je faire cela avec jquery ou 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.substr(0, position) + b + a.substr(position);
Vous pouvez ajouter cette fonction à la classe string
String.prototype.insertAt=function(index, string) {
return this.substr(0, index) + string + this.substr(index);
}
afin que vous puissiez l'utiliser sur n'importe quel objet string:
var myString = "abcd";
myString.insertAt(1, "XX");
Peut-être que c'est encore mieux si vous déterminez position using indexOf () comme ceci:
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";
}
puis appelez la fonction comme ceci:
insertString("I want Apple", "an ", "Apple");
Notez que je mets un espace après le "un" dans l'appel de fonction, plutôt que dans l'instruction return.
La bibliothèque Underscore.String a une fonction qui fait Insert
insert (chaîne, index, sous-chaîne) => chaîne
ainsi
insert("Hello ", 6, "world");
// => "Hello world"
var array = a.split(' ');
array.splice(position, 0, b);
var output = array.join(' ');
Ce serait plus lent, mais prendrait en compte l'ajout d'espace avant et après le De plus, vous devrez changer la valeur de position (2, c'est plus intuitif maintenant)
L'utilisation de les littéraux de chaîne ES6 , serait beaucoup plus courte:
const instertAt = (str, sub, pos) => `${str.slice(0, pos)}${sub}${str.slice(pos)}`;
console.log(instertAt('I want Apple', ' an', 6)) // logs 'I want an Apple'
essayer
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);
ou solution regexp
"I want Apple".replace(/^(.{6})/,"$1 an")
var a = "I want Apple";
var b = " an";
var position = 6;
var r= a.replace(new RegExp(`^(.{${position}})`),"$1"+b);
console.log(r);
console.log("I want Apple".replace(/^(.{6})/,"$1 an"));
Solution rapide! Si vous ne voulez pas ajouter manuellement un espace, vous pouvez faire ceci:
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);
(edit: je vois que c'est effectivement répondu ci-dessus, désolé!)
Eh bien, juste un petit changement, car les résultats de la solution ci-dessus
"Je veux une pomme"
au lieu de
"Je veux une pomme"
Pour obtenir la sortie en tant que
"Je veux une pomme"
utiliser le code modifié suivant
var output = a.substr(0, position) + " " + b + a.substr(position);