Je veux supprimer toutes les occurrences de la sous-chaîne = .
dans une chaîne, sauf la dernière.
E.G :
1.2.3.4
devrait devenir :
123.4
Je veux supprimer toutes les occurrences de la sous-chaîne = .
dans une chaîne, sauf la dernière.
E.G :
1.2.3.4
devrait devenir :
123.4
2-liner :
function removeAllButLast(string, token) {
/* Requires STRING not contain TOKEN */
var parts = string.split(token);
return parts.slice(0,-1).join('') + token + parts.slice(-1)
}
Version alternative sans l'exigence de l'argument chaîne :
function removeAllButLast(string, token) {
var parts = string.split(token);
if (parts[1]===undefined)
return string;
else
return parts.slice(0,-1).join('') + token + parts.slice(-1)
}
Demo:
> removeAllButLast('a.b.c.d', '.')
"abc.d"
L'exemple suivant est une expression régulière qui tire parti du fait que la balise *
est gourmand, et que le remplacement laissera la chaîne seule si aucune correspondance n'est trouvée. Il fonctionne en faisant correspondre [la chaîne la plus longue incluant des points][point] et en laissant [le reste de la chaîne], et si une correspondance est trouvée, il enlève tous les "." :
'a.b.c.d'.replace(/(.*)\./, x => x.replace(/\./g,'')+'.')
(Si votre chaîne de caractères contient des sauts de ligne, vous devrez utiliser la commande [.\n]
plutôt que nu .
s)
A replaceAllButLast
est plus utile qu'une fonction removeAllButLast
fonction. Lorsque vous voulez supprimer, il suffit de remplacer par une chaîne vide :
function replaceAllButLast(str, pOld, pNew) {
var parts = str.split(pOld)
if (parts.length === 1) return str
return parts.slice(0, -1).join(pNew) + pOld + parts.slice(-1)
}
var test = 'hello there hello there hello there'
test = replaceAllButLast(test, ' there', '')
console.log(test) // hello hello hello there
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.