Як видалити “px” з 245px


Відповіді:


182

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

parseInt('245px', 10);

Він зберігає лише провідні числа, а всі інші відкидає.


7
Це найбільш податливий спосіб, але ви завжди повинні вказувати радіксparseInt('245px', 10)
Джастін Джонсон,

Ви маєте рацію: (дивним) за замовчуванням є вісімкове значення, коли рядок починається з "0" ... Скільки разів я отримував помилку parseInt('09')!
Дон

4
що ти робиш, коли значення приблизно 35,5 пікселів ... за допомогою синтаксичного аналізу призведе лише до 35
Мухаммад Умер,

5
@MuhammadUmer: ви можете використовувати 'parseFloat' ( w3schools.com/jsref/jsref_parsefloat.asp )
Дон,

38

використання

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

де 10 є радікс визначення parseIntє розбір до десяткового значення

використовуйте parseInt, але не використовуйте parseInt без radix

Функція 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.50px, тоді значення буде округлено до 245.


Оскільки моє редагування з метою точності було відхилено, я буду коментувати parseFloat()це, не приймаючи radix типу parseInt()(Див. Developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… & stackoverflow.com/ questions / 8555649 /… )
Wax,

16

Це робить саме те, що ви просите: видаліть дві останні символи рядка:

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

5

Дивно, але метод substring 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 враховують пробіл. Я також спробував a 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()виглядає набагато чистіше, IMO. Негативні значення відлічуються з кінця.


Це робить для менш цінної функції, однак, оскільки її не можна використовувати для remзначень.
Алан Шортіс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.