Supprimer les zéros de tête d'un nombre dans Javascript [dupliquer]

possibilité de dupliquer:

tronquer les zéros principaux d'une chaîne en Javascript

Quel est le moyen le plus simple et compatible avec les navigateurs croisés pour supprimer les zéros principaux d'un nombre en Javascript ?

p. ex. si j'ai une valeur de boîte de texte comme 014 ou 065, il ne doit retourner que 14 ou 65

88
demandé sur Community 2011-07-13 12:59:28

3 réponses

Essayer parseInt .

parseInt("065", 10);


Le second paramètre est pour le radix et selon la documentation, il doit toujours être spécifié. Le MDN dit,

radix

un entier qui représente le radix du CI-DESSUS mentionné chaîne. Toujours spécifier ce paramètre pour éliminer lecteur confusion et pour garantir un comportement prévisible. Différentes implémentations produire des résultats différents lorsque la base n'est pas spécifié.

.............

.............

Si radix n'est pas défini ou 0 (ou absent), JavaScript suppose ce qui suit:

  • si l'entrée chaîne commence par" 0x "ou" 0X", radix est 16 (en hexadécimal) et le reste de la chaîne est analysée.
  • si l'entrée chaîne commence par" 0", radix est huit (octal) ou 10 (décimal). Le radix choisi dépend de la mise en œuvre. ECMAScript 5 spécifie que 10 (décimal) est utilisé, mais pas tous les navigateurs prise en charge cette encore. Pour cette raison toujours spécifier un radix lors de l'utilisation de parseInt .
  • si l'entrée chaîne de caractères commence par toute autre valeur, le radix est de 10 (décimal.)

par exemple, dans certaines implémentations parseInt("01803") donnera 1 . En supposant que le but est d'obtenir 1803 , appelez parseInt avec un radix de 10 pour s'assurer que l'analyse est faite dans un système de numérotation décimale de base. C'est-à-dire: parseInt("01803", 10) donnera 1803 . Veuillez noter que pour une valeur non-entière, parseInt() arrondira le nombre à retourner en entier. paseInt("018.03", 10) donnera 18 .

157
répondu naveen 2017-11-13 23:46:58

regexp:

"014".replace(/^0+/, '')
118
répondu keymone 2011-07-13 09:00:13

Il n'est pas clair pourquoi vous voulez le faire. Si vous voulez obtenir la valeur numérique correcte, vous pouvez utiliser unary + [docs] :

value = +value;

si vous voulez simplement formater le texte, alors regex pourrait être mieux. Cela dépend des valeurs avec lesquelles vous avez affaire, je dirais. Si vous n'avez que des entiers, alors

input.value = +input.value;

est très bien. Bien sûr il fonctionne pour les valeurs flottantes, mais en fonction du nombre de chiffres après le point, le convertir en nombre et en une chaîne de caractères peut (au moins pour l'affichage) supprimer certains.

20
répondu Felix Kling 2011-07-13 09:18:24