Qual è un modo semplice per eliminare gli ultimi due caratteri di una stringa?
Risposte:
Per convertire 245px
in 245 basta eseguire:
parseInt('245px', 10);
Conserva solo i numeri iniziali e scarta tutto il resto.
parseInt('09')
!
uso
var size = parseInt('245px', 10);
dove 10 è la radice che definisce parseInt
sta analizzando un valore decimale
La funzione parseInt () analizza una stringa e restituisce un numero intero.
La firma è parseInt(string, radix)
Il secondo argomento forza parseInt a utilizzare un sistema di numerazione in base dieci.
perché? se $ (this) .attr ('num') fosse "08", parsInt senza radice diventerebbe 0
Per convertire un valore di pixel senza il "px" alla fine. utilizzare parseFloat.
parseFloat('245px'); // returns 245
Nota: se si utilizza parseInt, il valore sarà corretto se il valore è un numero intero. Se il valore è un decimale come 245,50 px, il valore verrà arrotondato a 245.
parseFloat()
non accetta radix come parseInt()
(Vedi developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/ domande / 8555649 /… )
Sorprendentemente, il metodo della sottostringa s.substr(0, s.length-2);
è in realtà un po 'più veloce per rimuovere il px
(sì, non è così pulito, e se c'è uno spazio rimarrà - "250px" -> "250"
vs"250 px" -> "250 "
).
Se vuoi tenere conto degli spazi (cosa che probabilmente dovresti), l'uso della .trim()
funzione rallenterà effettivamente il substr
test abbastanza da rendere il parseInt
metodo effettivamente superiore.
Un ulteriore vantaggio dell'utilizzo parseInt(s, 10)
è che si ottiene anche una conversione del tipo e si può immediatamente iniziare ad applicarla alle funzioni matematiche.
Quindi, alla fine, dipende davvero da cosa pensi di fare con il risultato.
substr
metodo senza trim sarebbe probabilmente la soluzione migliore.s.substr(0, s.length-2) == 0
, allora substr
sarebbe meglio usare il metodo, poiché "250 " == 250
(anche con lo spazio) risulterà cometrue
parseInt
percorso.http://jsperf.com/remove-px-from-coord
I test su jspref tengono conto di uno spazio. Ho anche provato una funzione s.split('px')[0]
e s.replace(/ *px/g, '')
, entrambe risultate più lente.
Sentiti libero di aggiungere altri casi di test.
Sebbene parseInt () sia una buona opzione, è comunque utile avere molte altre soluzioni
var pixels = '245px';
Number(pixels.replace('px', ''));
Controlla http://www.w3schools.com/jsref/jsref_substr.asp Nel tuo caso sarebbe qualcosa di simile
string.substr(0, string.length - 2)
Preferisco:
"245px".replace(/px/,'')*1
poiché non circonda l'ingresso.
Inoltre, *1
è per lanciarlo a int.
substr()
è ora una funzionalità legacy ; usa substring()
invece: (la sintassi è la stessa in questo caso )
str.substring(0, str.length-2);
Oppure usa slice()
:
str.slice(0, -2);
slice()
sembra molto più pulito, IMO. I valori negativi contano a ritroso dalla fine.
rem
valori.
parseInt('245px', 10)