Quel est un moyen simple de supprimer les deux derniers caractères d'une chaîne?
Pour convertir 245px
en 245, exécutez simplement:
parseInt('245px', 10);
Il ne conserve que les premiers chiffres et élimine tout le reste.
utilisation
var size = parseInt('245px', 10);
où 10 est le radix définissant parseInt
est une analyse de la valeur decimal
La fonction parseInt () analyse une chaîne et renvoie un entier.
La signature est parseInt(string, radix)
Le deuxième argument oblige parseInt à utiliser un système de numérotation de base dix.
pourquoi? _ {si $ (this) .attr ('num') serait {08 '. ParsInt sans radix deviendrait 0
Cela fait exactement ce que vous demandez: supprimez les deux derniers caractères d'une chaîne:
s.substr(0, s.length-2);
Pour convertir une valeur de pixel sans le "px" à la fin. utilisez parseFloat.
parseFloat('245px', 10);//returns 245
Remarque: Si vous utilisez parseInt, la valeur sera correcte si la valeur est un entier. Si la valeur est une valeur décimale telle que 245.50px, elle sera arrondie à 245.
Étonnamment, la méthode de sous-chaîne s.substr(0, s.length-2);
est en réalité un peu plus rapide pour supprimer la px
(oui, elle n’est pas aussi nette et, s'il reste un espace, elle restera - "250px" -> "250"
vs "250 px" -> "250 "
).
Si vous voulez prendre en compte les espaces (ce que vous devriez probablement faire), alors utiliser la fonction .trim()
ralentira le test substr
suffisamment pour que la méthode parseInt
devienne réellement supérieure.
L'utilisation de parseInt(s, 10)
offre un avantage supplémentaire, à savoir que vous obtenez également une conversion de type et que vous pouvez immédiatement commencer à l'appliquer à des fonctions mathématiques.
Au final, cela dépend vraiment de ce que vous comptez faire avec le résultat.
substr
sans, un ajustement serait probablement votre meilleur choix.s.substr(0, s.length-2) == 0
, alors utiliser la méthode substr
serait préférable, car "250 " == 250
(même avec l'espace) donnera true
parseInt
.http://jsperf.com/remove-px-from-coord
Les tests sur jspref représentent un espace. J'ai également essayé les fonctions s.split('px')[0]
et s.replace(/ *px/g, '')
, toutes deux plus lentes.
N'hésitez pas à ajouter des cas de test supplémentaires.
Vérifiez http://www.w3schools.com/jsref/jsref_substr.asp Dans votre cas, cela ressemble à
string.substr(0, string.length - 2)
Je préfère: "245px".replace(/px/,'')*1
car il ne entoure pas l'entrée.
De plus, le *1
sert à le lancer en int.