Как удалить "px" из 245px

Какой простой способ удалить последние два символа строки?

Ответ 1

Для преобразования 245px в 245 просто выполните:

parseInt('245px', 10);

Он сохраняет только ведущие числа и отбрасывает все остальное.

Ответ 2

использовать

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

где 10 - radix, определяющий parseInt, анализирует значение десятичное

используйте parseInt, но не используйте parseInt без radix

Функция parseInt() анализирует строку и возвращает целое число.

Подпись parseInt(string, radix)

Второй аргумент заставляет parseInt использовать базовую систему нумерации.

  • Тип ввода по умолчанию для ParseInt() является десятичным (базовый 10).
  • Если число начинается с "0", оно считается восьмеричным (основание 8).
  • Если он начинается с "0x", он считается шестнадцатеричным

почему? если $(this).attr('num') будет "08" parsInt без основания будет 0

Ответ 3

Это делает именно то, что вы просите: удалите последние два символа строки:

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

Ответ 4

Чтобы преобразовать значение пикселя без "px" в конце. используйте parseFloat.

parseFloat('245px', 10);//returns 245

Примечание. Если вы используете parseInt, значение vaue будет правильным, если это целое число. Если значение является десятичным, например 245.50px, тогда значение будет округлено до 245.

Ответ 5

Удивительно, что метод подстроки s.substr(0, s.length-2); на самом деле довольно быстро ускоряет удаление px (да, это не так чисто выглядит, и если есть пробел, он останется - "250px" -> "250" vs "250 px" -> "250 ").

Если вы хотите учесть пробелы (что вам, вероятно, и нужно), то использование функции .trim() фактически замедлит тест substr, достаточный для того, чтобы метод parseInt стал лучше.

Дополнительным преимуществом использования parseInt(s, 10) является то, что вы также получаете преобразование типа и можете сразу начать применять его к математическим функциям.

Итак, в конце концов, это действительно зависит от того, что вы планируете делать с результатом.

  • Если это только отображение, то с помощью метода substr без обрезка, вероятно, будет лучшим выбором.
  • Если вы просто пытаетесь определить, будет ли значение без px совпадать с другим значением s.substr(0, s.length-2) == 0, то лучше использовать метод substr, поскольку "250 " == 250 (даже с пространством) будет отображаться как true
  • Если вы хотите учесть возможность пробела, добавьте его в другое значение или вычислите что-то с ним, тогда вы можете рассмотреть возможность перехода с маршрутом parseInt.

http://jsperf.com/remove-px-from-coord

Тесты на jspref учитывают пробел. Я также попробовал функцию s.split('px')[0] и s.replace(/ *px/g, ''), обе оказались медленнее.

Не стесняйтесь добавлять дополнительные тестовые примеры.

Ответ 7

Я предпочитаю: "245px".replace(/px/,'')*1

так как он не окружает вход.

Кроме того, *1 для приведения его к int.