如何从245px删除“ px”


Answers:


182

要转换245px为245,只需运行:

parseInt('245px', 10);

它仅保留前导数字,并丢弃所有其余的数字。


7
这是最具延展性的方法,但是您应始终指定基数parseInt('245px', 10)
贾斯汀·约翰逊

你是对的:在(怪)默认是八进制当字符串以“0” ......多少次,我得到了一个错误parseInt('09')

4
当值是35.5px..parseInt时,您将怎么做只会导致35
Muhammad Umer

5
@MuhammadUmer:您可以使用'parseFloat'(w3schools.com/jsref/jsref_parsefloat.asp

38

使用

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

其中10是基数定义,parseInt正在解析为十进制

使用parseInt但不要不带基数使用parseInt

parseInt()函数解析一个字符串并返回一个整数。

签名是 parseInt(string, radix)

第二个参数强制parseInt使用以10为底的编号系统。

  • ParseInt()的默认输入类型是十进制(以10为底)。
  • 如果数字以“ 0”开头,则假定为八进制(以8为底)。
  • 如果以“ 0x”开头,则假定为十六进制

为什么?如果$(this).attr('num')为“ 08”,则不带基数的parsInt将变为0


19

要转换末尾没有“ px”的像素值。使用parseFloat。

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

注意:如果使用parseInt,则该值为正确的整数。如果该值是小数点后的值,例如245.50px,则该值将四舍五入为245。


由于我为提高精度所做的编辑被拒绝,因此我将在此发表评论,parseFloat()而不是像parseInt()(请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…stackoverflow.com/问题/ 8555649 / ...

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的测试占用了空间。我还尝试了s.split('px')[0]s.replace(/ *px/g, '')函数,两者都发现速度较慢。

随时添加其他测试用例。




0

我更喜欢: "245px".replace(/px/,'')*1

因为它不在输入周围。

另外,*1用于将其强制转换为int。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.