Какой простой способ удалить последние два символа строки?
Как удалить "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, '')
, обе оказались медленнее.
Не стесняйтесь добавлять дополнительные тестовые примеры.
Ответ 6
Отметьте http://www.w3schools.com/jsref/jsref_substr.asp В вашем случае будет что-то вроде
string.substr(0, string.length - 2)
Ответ 7
Я предпочитаю: "245px".replace(/px/,'')*1
так как он не окружает вход.
Кроме того, *1
для приведения его к int.