web-dev-qa-db-fra.com

Comment supprimer "px" de 245px

Quel est un moyen simple de supprimer les deux derniers caractères d'une chaîne?

75
Tomkay

Pour convertir 245px en 245, exécutez simplement:

parseInt('245px', 10);

Il ne conserve que les premiers chiffres et élimine tout le reste.

153
Don

utilisation 

var size = parseInt('245px', 10);

où 10 est le radix définissant parseInt est une analyse de la valeur decimal

utilisez parseInt mais n'utilisez pas parseInt sans radix

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.

  • Le type d'entrée par défaut pour ParseInt () est décimal (base 10). 
  • Si le nombre commence par "0", il est supposé être octal (base 8). 
  • S'il commence par "0x", il est supposé être hexadécimal

pourquoi? _ {si $ (this) .attr ('num') serait {08 '. ParsInt sans radix deviendrait 0

34
Caspar Kleijne

Cela fait exactement ce que vous demandez: supprimez les deux derniers caractères d'une chaîne:

s.substr(0, s.length-2);
14
Jochem

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.

13
Foreever

É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. 

  • S'il s'agit d'un affichage uniquement, alors, en utilisant la méthode substrsans, un ajustement serait probablement votre meilleur choix.
  • Si vous essayez simplement de voir si la valeur sans px est identique à une autre valeur 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
  • Si vous souhaitez prendre en compte la possibilité d’un espace, l’ajouter à une autre valeur ou en calculer un autre, vous pouvez envisager d’utiliser la route 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.

5
Kyle Shay

Vérifiez http://www.w3schools.com/jsref/jsref_substr.asp Dans votre cas, cela ressemble à 

string.substr(0, string.length - 2)
0
brafales

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.

0
bArmageddon