2255 votes

Comment supprimer la dernière lettre d'une chaîne en utilisant JavaScript?

J'ai une chaîne, 12345.00, et je voudrais qu'elle renvoie 12345.0.

J'ai regardé trim, mais il semble qu'il ne fait que supprimer les espaces et slice dont je ne vois pas comment cela fonctionnerait. Des suggestions?

38 votes

Vous souciez-vous de l'arrondi ? 12345.46 = 12345.5 ou 12345.4 ?

9 votes

Savez-vous quel est le suffixe ou voulez-vous diviser et supprimer le dernier mot en fonction de vos tirets du bas?

71 votes

Ho ho ho, @RSolberg: vous ne pouvez pas arrondir une chaîne!

3609voto

Jon Erickson Points 29643

Vous pouvez utiliser la fonction substring:

let str = "12345.00";
str = str.substring(0, str.length - 1);
console.log(str);

Ceci est la réponse acceptée, mais selon les conversations ci-dessous, la syntaxe de slice est beaucoup plus claire:

let str = "12345.00";
str = str.slice(0, -1); 
console.log(str);

29 votes

@Kheu - la notation de tranche est beaucoup plus propre pour moi. J'utilisais auparavant la version sous-chaîne. Merci!

37 votes

Je suis désolé si je me trompe, mais n'avez-vous pas besoin d'assigner à nouveau la valeur de str.substring à str? Comme str = str.substring(0, str.length -1);

12 votes

Les méthodes slice et substring sont presque les mêmes; sauf que slice() accepte un index négatif, relatif à la fin de la chaîne, mais pas substring, il lance une erreur out-of-bound

1427voto

Jason S Points 58434

Vous pouvez utiliser slice! Vous devez juste vous assurer de savoir comment l'utiliser. Les numéros positifs sont relatifs au début, les numéros négatifs sont relatifs à la fin.

js>"12345.00".slice(0,-1)
12345.0

79 votes

Par rapport à la solution acceptée, ceci est beaucoup plus élégant et peut même être utilisé avec des chaînes créées dynamiquement

1 votes

J'aime cette méthode car elle est cohérente avec la pensée php pour la fonction substr, plus facile à retenir et à écrire rapidement.

2 votes

@SameerAlibhai Je suis d'accord avec vous, mais ne pourrait-on pas utiliser la méthode substring sur des chaînes dynamiques aussi? En utilisant str.length pour obtenir dynamiquement la longueur?

270voto

Alex Martelli Points 330805

Vous pouvez utiliser la méthode substring des objets string JavaScript :

s = s.substring(0, s.length - 4)

Cela supprime inconditionnellement les quatre derniers caractères de la chaîne s.

Cependant, si vous voulez supprimer conditionnellement les quatre derniers caractères, seulement s'ils sont exactement _bar :

var re = /_bar$/;
s.replace(re, "");

107 votes

slice est meilleure ici. s.slice(0, -4)

13 votes

Alternatively: s.slice(0, -"_bar".length) (utilisé si on ne veut pas coder en dur le nombre de caractères)

3 votes

J'aime celui-ci car il donne également de l'aide pour remplacer une fin spécifiée.

169voto

Tim Down Points 124501

La méthode la plus simple consiste à utiliser la méthode slice de la chaîne de caractères, qui permet des positions négatives (correspondant aux décalages depuis la fin de la chaîne) :

const s = "votre chaîne";
const sansQuatreDerniersCaracteres = s.slice(0, -4);

Si vous avez besoin de quelque chose de plus général pour supprimer tout ce qui se trouve après (et y compris) le dernier tiret bas, vous pouvez faire ce qui suit (tant que s contient au moins un tiret bas) :

const s = "votre_chaine";
const sansDernierMorceau = s.slice(0, s.lastIndexOf("_"));
console.log(sansDernierMorceau);

1 votes

J'ai besoin de ceci s.slice(0, s.lastIndexOf("_")); merci!

70voto

Paolo Bergantino Points 199336

Pour un nombre comme votre exemple, je recommanderais de faire ceci plutôt que substring:

console.log(parseFloat('12345.00').toFixed(1));

À noter que cela va effectivement arrondir le nombre, ce qui est souhaité mais peut-être pas :

console.log(parseFloat('12345.46').toFixed(1));

11 votes

+1 C'est ce dont l'OP a besoin, oubliez la fausse hypothèse selon laquelle il y a des chaînes à élaguer.

5 votes

Ce n'est pas une fausse hypothèse, OP parle de chaînes de caractères. La vôtre est une fausse hypothèse car OP ne parle pas d'arrondir les nombres.

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