¿Cuál es una forma sencilla de eliminar los dos últimos caracteres de una cadena?
Respuestas:
Para convertir 245px
en 245 simplemente ejecute:
parseInt('245px', 10);
Conserva solo los números iniciales y descarta el resto.
parseInt('09')
!
utilizar
var size = parseInt('245px', 10);
donde 10 es la base que define el parseInt
análisis a un valor decimal
La función parseInt () analiza una cadena y devuelve un número entero.
La firma es parseInt(string, radix)
El segundo argumento obliga a parseInt a utilizar un sistema de numeración de base diez.
¿por qué? si $ (this) .attr ('num') sería "08", parsInt sin una base se convertiría en 0
Para convertir un valor de píxel sin el "px" al final. use parseFloat.
parseFloat('245px'); // returns 245
Nota: Si usa parseInt, el valor será correcto si el valor es un número entero. Si el valor es decimal como 245,50 px, entonces el valor se redondeará a 245.
parseFloat()
no toma radix como parseInt()
(Ver developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/ preguntas / 8555649 /… )
Sorprendentemente, el método de la subcadena s.substr(0, s.length-2);
es en realidad bastante más rápido para eliminar el px
(sí, no tiene un aspecto tan limpio, y si hay un espacio, permanecerá - "250px" -> "250"
vs "250 px" -> "250 "
).
Si desea tener en cuenta los espacios (que probablemente debería hacerlo), el uso de la .trim()
función en realidad ralentizará la substr
prueba lo suficiente como para que el parseInt
método sea realmente superior.
Un beneficio adicional de usar parseInt(s, 10)
es que también obtiene una conversión de tipo y puede comenzar a aplicarla inmediatamente a funciones matemáticas.
Entonces, al final, realmente depende de lo que planees hacer con el resultado.
substr
método sin un recorte probablemente sea su mejor opción.s.substr(0, s.length-2) == 0
, entonces usar el substr
método sería lo mejor, ya que "250 " == 250
(incluso con el espacio) resultará comotrue
parseInt
ruta.http://jsperf.com/remove-px-from-coord
Las pruebas en jspref dan cuenta de un espacio. También probé una función s.split('px')[0]
y s.replace(/ *px/g, '')
, ambas resultaron ser más lentas.
No dude en agregar casos de prueba adicionales.
Aunque parseInt () es una buena opción, es bueno tener muchas otras soluciones
var pixels = '245px';
Number(pixels.replace('px', ''));
Consulte http://www.w3schools.com/jsref/jsref_substr.asp En su caso sería algo como
string.substr(0, string.length - 2)
Yo prefiero:
"245px".replace(/px/,'')*1
ya que no rodea la entrada.
Además, *1
es para convertirlo en int.
substr()
ahora es una función heredada ; use substring()
en su lugar: (la sintaxis es la misma en este caso )
str.substring(0, str.length-2);
O use slice()
:
str.slice(0, -2);
slice()
parece mucho más limpio, en mi opinión. Los valores negativos cuentan desde el final.
rem
valores.
parseInt('245px', 10)