¿Cuál es una forma sencilla de eliminar los dos últimos caracteres de una cadena?
Respuestas:
Para convertir 245pxen 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 parseIntaná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 substrprueba lo suficiente como para que el parseIntmé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.
substrmétodo sin un recorte probablemente sea su mejor opción.s.substr(0, s.length-2) == 0, entonces usar el substrmétodo sería lo mejor, ya que "250 " == 250(incluso con el espacio) resultará comotrueparseIntruta.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, *1es 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.
remvalores.
parseInt('245px', 10)