Was ist eine einfache Möglichkeit, die letzten beiden Zeichen einer Zeichenfolge zu löschen?
Antworten:
Um 245px
in 245 zu konvertieren, führen Sie einfach Folgendes aus:
parseInt('245px', 10);
Es behält nur führende Zahlen bei und verwirft den Rest.
parseInt('09')
!
verwenden
var size = parseInt('245px', 10);
Dabei ist 10 die Radixdefinition , die parseInt
auf einen Dezimalwert analysiert wird
Die Funktion parseInt () analysiert eine Zeichenfolge und gibt eine Ganzzahl zurück.
Die Unterschrift ist parseInt(string, radix)
Das zweite Argument zwingt parseInt, ein Nummerierungssystem der Basis zehn zu verwenden.
Warum? Wenn $ (this) .attr ('num') "08" wäre, würde parsInt ohne Radix 0 werden
So konvertieren Sie einen Pixelwert ohne das "px" am Ende. benutze parseFloat.
parseFloat('245px'); // returns 245
Hinweis: Wenn Sie parseInt verwenden, ist der Wert korrekt, wenn der Wert eine Ganzzahl ist. Wenn der Wert wie 245,50 Pixel dezimal ist, wird der Wert auf 245 gerundet.
parseFloat()
der nicht wie folgt aussiehtparseInt()
(siehe developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/). Fragen / 8555649 /… )
Überraschenderweise ist die Teilstring-Methode s.substr(0, s.length-2);
zum Entfernen des Teilstrings tatsächlich ziemlich viel schneller px
(ja, sie sieht nicht so sauber aus, und wenn ein Leerzeichen vorhanden ist, bleibt sie erhalten - "250px" -> "250"
vs "250 px" -> "250 "
).
Wenn Sie Leerzeichen berücksichtigen möchten (was Sie wahrscheinlich sollten), .trim()
verlangsamt die Verwendung der Funktion den substr
Test tatsächlich so weit , dass die parseInt
Methode tatsächlich überlegen wird.
Ein zusätzlicher Vorteil der Verwendung parseInt(s, 10)
besteht darin, dass Sie auch eine Typkonvertierung erhalten und diese sofort auf mathematische Funktionen anwenden können.
Am Ende kommt es also wirklich darauf an, was Sie mit dem Ergebnis vorhaben.
substr
Methode ohne Trimmung wahrscheinlich die beste Wahl.s.substr(0, s.length-2) == 0
, ist die Verwendung der substr
Methode am besten, da "250 " == 250
(auch mit Leerzeichen) als resultierttrue
parseInt
Route in Betracht ziehen .http://jsperf.com/remove-px-from-coord
Die Tests auf jspref berücksichtigen ein Leerzeichen. Ich habe auch a s.split('px')[0]
und s.replace(/ *px/g, '')
function ausprobiert , beide waren langsamer.
Fühlen Sie sich frei, zusätzliche Testfälle hinzuzufügen.
Obwohl parseInt () eine gute Option ist, ist es dennoch gut, viele andere Lösungen zu haben
var pixels = '245px';
Number(pixels.replace('px', ''));
Überprüfen Sie http://www.w3schools.com/jsref/jsref_substr.asp In Ihrem Fall wäre so etwas
string.substr(0, string.length - 2)
Ich bevorzuge:
"245px".replace(/px/,'')*1
da es den Eingang nicht umgibt.
Das *1
ist auch für das Casting auf int.
substr()
ist jetzt eine Legacy-Funktion ; Verwenden Sie substring()
stattdessen: (Die Syntax ist in diesem Fall dieselbe. )
str.substring(0, str.length-2);
Oder verwenden Sie slice()
:
str.slice(0, -2);
slice()
sieht viel sauberer aus, IMO. Negative Werte zählen vom Ende zurück.
rem
Werte verwendet werden kann.
parseInt('245px', 10)