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

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

78 голосов
/ 01 февраля 2011

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

Ответы [ 7 ]

159 голосов
/ 01 февраля 2011

Чтобы преобразовать 245px в 245, просто запустите:

parseInt('245px', 10);

Он сохраняет только первые цифры и сбрасывает все остальные.

34 голосов
/ 01 февраля 2011

использование

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

14 голосов
/ 01 февраля 2011

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

s.substr(0, s.length-2);
13 голосов
/ 21 февраля 2014

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

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

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

5 голосов
/ 21 июля 2014

Удивительно, но метод подстроки s.substr(0, s.length-2); на самом деле немного быстрее для удаления px (да, он выглядит не так чисто, и если есть пробел, он останется - "250px" -> "250" против "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, ''), обе оказались медленнее.

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

0 голосов
/ 13 декабря 2018

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

, поскольку он не окружает вход.

Также, *1 предназначен для приведения его к int.

0 голосов
/ 01 февраля 2011

Чек http://www.w3schools.com/jsref/jsref_substr.asp В вашем случае было бы что-то вроде

string.substr(0, string.length - 2)
...