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

Ответы:

185

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

parseInt('245px', 10);

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

Дон
источник
7
Это наиболее гибкий способ, но вы всегда должны указывать систему счисленияparseInt('245px', 10)
Джастин Джонсон
Вы правы: (странно) по умолчанию используется восьмеричное число, когда строка начинается с «0» ... Сколько раз я получал ошибку parseInt('09')!
Дон
4
что делать, если значение равно 35.5px .. использование parseInt даст только 35
Мухаммад Умер
5
@MuhammadUmer: вы можете использовать 'parseFloat' ( w3schools.com/jsref/jsref_parsefloat.asp )
Дон
38

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

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

где 10 - основание системы счисления, определяющее parseIntсинтаксический анализ до десятичного значения

используйте parseInt, но не используйте parseInt без основания

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

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

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

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

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

Каспар Клейне
источник
19

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

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

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

Foreever
источник
Как мои редактирования , чтобы сделать точность было отклонено, я собираюсь поставить это в комментариях, parseFloat()не принимает десятичные как parseInt()(См developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... и stackoverflow.com/ вопросы / 8555649 /… )
воск
16

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

s.substr(0, s.length-2);
Йохем
источник
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, '')функцию, обе оказались медленнее.

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

Кайл Шэй
источник
1

Хотя parseInt () - хороший вариант, но все же хорошо иметь много других решений

var pixels = '245px';
Number(pixels.replace('px', ''));
Шоаиб Ахмад
источник
0

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

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

Кроме того, он *1предназначен для преобразования в int.

бАрмагедон
источник
0

substr()в настоящее время является наследием функция ; используйте substring()вместо этого: (синтаксис в этом случае тот же )

str.substring(0, str.length-2);

Или используйте slice():

str.slice(0, -2);

slice()выглядит намного чище, ИМО. Отрицательные значения отсчитываются с конца.

Элайджа Мок
источник
Однако это делает функцию менее ценной, так как не может использоваться для remзначений.
Алан Шортис,