Quel est le moyen le plus simple de supprimer les deux derniers caractères d'une chaîne de caractères ?
C'est la manière la plus malléable, mais vous devez toujours spécifier le radix parseInt('245px', 10)
Quel est le moyen le plus simple de supprimer les deux derniers caractères d'une chaîne de caractères ?
C'est la manière la plus malléable, mais vous devez toujours spécifier le radix parseInt('245px', 10)
Vous avez raison : le défaut (étrange) est l'octal lorsque la chaîne commence par '0'... Combien de fois j'ai eu une erreur pour parseInt('09')
!
Que faites-vous lorsque la valeur est de 35,5px ? L'utilisation de parseInt donnerait 35 seulement.
Utiliser
var size = parseInt('245px', 10);
où 10 est le radix définir parseInt
est analysé dans un décimal valeur
La fonction parseInt() analyse une chaîne de caractères et renvoie un nombre entier.
La signature est parseInt(string, radix)
Le deuxième argument force parseInt à utiliser un système de numérotation en base dix.
Pourquoi ? si $(this).attr('num') serait "08" parsInt sans radix deviendrait 0
Pour convertir une valeur de pixel sans le "px" à la fin, utilisez parseFloat.
parseFloat('245px'); // returns 245
Remarque : si vous utilisez parseInt, la valeur sera correcte si la valeur est un nombre entier. Si la valeur est une valeur décimale comme 245.50px, alors la valeur sera arrondie à 245.
Comme mon édition pour faire une précision a été rejetée, je vais mettre ça en commentaire, parseFloat()
ne prend pas de radix comme parseInt()
(Voir developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/ & stackoverflow.com/questions/8555649/ )
Étonnamment, la méthode de la sous-chaîne s.substr(0, s.length-2);
est en fait un peu plus rapide pour supprimer le px
(oui, ce n'est pas aussi propre, et s'il y a un espace, il restera ). "250px" -> "250"
vs "250 px" -> "250 "
).
Si vous souhaitez prendre en compte les espaces (ce qui est probablement le cas), vous pouvez utiliser la balise .trim()
ralentira en fait le substr
suffisamment pour que le parseInt
la méthode devient en fait supérieure.
Un avantage supplémentaire de l'utilisation de parseInt(s, 10)
est que vous obtenez également une conversion de type et que vous pouvez immédiatement commencer à l'appliquer aux fonctions mathématiques.
Au final, tout dépend de ce que vous comptez faire du résultat.
substr
méthode sans une coupe serait probablement votre meilleure option.s.substr(0, s.length-2) == 0
puis en utilisant le substr
serait la meilleure méthode, car "250 " == 250
(même avec l'espace) donnera comme résultat true
parseInt
route.http://jsperf.com/remove-px-from-coord
Les tests sur jspref tiennent compte d'un espace. J'ai également essayé un s.split('px')[0]
y s.replace(/ *px/g, '')
qui sont toutes deux plus lentes.
N'hésitez pas à ajouter des cas de test supplémentaires.
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.