Ответ 1
Для преобразования 245px
в 245 просто выполните:
parseInt('245px', 10);
Он сохраняет только ведущие числа и отбрасывает все остальное.
Какой простой способ удалить последние два символа строки?
Для преобразования 245px
в 245 просто выполните:
parseInt('245px', 10);
Он сохраняет только ведущие числа и отбрасывает все остальное.
использовать
var size = parseInt('245px', 10);
где 10 - radix, определяющий parseInt
, анализирует значение десятичное
Функция parseInt() анализирует строку и возвращает целое число.
Подпись parseInt(string, radix)
Второй аргумент заставляет parseInt использовать базовую систему нумерации.
почему? если $(this).attr('num') будет "08" parsInt без основания будет 0
Это делает именно то, что вы просите: удалите последние два символа строки:
s.substr(0, s.length-2);
Чтобы преобразовать значение пикселя без "px" в конце. используйте parseFloat.
parseFloat('245px', 10);//returns 245
Примечание. Если вы используете parseInt, значение vaue будет правильным, если это целое число. Если значение является десятичным, например 245.50px, тогда значение будет округлено до 245.
Удивительно, что метод подстроки s.substr(0, s.length-2);
на самом деле довольно быстро ускоряет удаление px
(да, это не так чисто выглядит, и если есть пробел, он останется - "250px" -> "250"
vs "250 px" -> "250 "
).
Если вы хотите учесть пробелы (что вам, вероятно, и нужно), то использование функции .trim()
фактически замедлит тест substr
, достаточный для того, чтобы метод parseInt
стал лучше.
Дополнительным преимуществом использования parseInt(s, 10)
является то, что вы также получаете преобразование типа и можете сразу начать применять его к математическим функциям.
Итак, в конце концов, это действительно зависит от того, что вы планируете делать с результатом.
substr
без обрезка, вероятно, будет лучшим выбором.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, '')
, обе оказались медленнее.
Не стесняйтесь добавлять дополнительные тестовые примеры.
Отметьте http://www.w3schools.com/jsref/jsref_substr.asp В вашем случае будет что-то вроде
string.substr(0, string.length - 2)
Я предпочитаю: "245px".replace(/px/,'')*1
так как он не окружает вход.
Кроме того, *1
для приведения его к int.