如何从245px中删除“px”

什么是一个简单的方法来删除string的最后两个字符?

在245转换245px只需运行:

 parseInt('245px', 10); 

它只保留领先的数字,丢弃所有其他的数据。

使用

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

其中10是定义parseInt基数parsing为十进制

使用parseInt,但不要使用没有基数的 parseInt

parseInt()函数parsing一个string并返回一个整数。

签名是parseInt(string, radix)

第二个参数强制parseInt使用基本的十编号系统。

  • ParseInt()的默认inputtypes是十进制(以10为底)。
  • 如果数字以“0”开始,则假定为八进制(基数8)。
  • 如果以“0x”开始,则假定为hex

为什么? 如果$(this).attr('num')将是“08”parsInt没有基数将变成0

这正是你所要求的:删除一个string的最后两个字符:

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

在最后不用“px”来转换一个像素值。 使用parseFloat。

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

注意:如果使用parseInt,如果值是一个整数,那么vaue将是正确的。 如果该值是一个像245.50px的小数,那么该值将被舍入为245。

令人惊讶的是,子串方法s.substr(0, s.length-2); 实际上是更快的删除px (是的,它不是那么干净,如果有一个空间,它将保持 – "250px" -> "250" vs "250 px" -> "250 " ) 。

如果你想占空间(你可能应该),那么使用.trim()函数实际上会减慢substrtesting, parseInt方法实际上变得更好。

使用parseInt(s, 10)另外一个好处是你也可以进行types转换,并且可以立即开始将它应用到math函数中。

所以最终,这取决于你计划如何处理结果。

  • 如果只显示,那么使用substr方法没有修剪可能是你最好的select。
  • 如果你只是想看看没有px的值是否与另一个值s.substr(0, s.length-2) == 0 ,那么使用substr方法将是最好的,因为"250 " == 250 (即使有空间)的结果也是true
  • 如果你想考虑空间的可能性,把它添加到另一个值,或者用它来计算一些东西,那么你可能要考虑使用parseInt路由。

http://jsperf.com/remove-px-from-coord

在jspref帐户上testing一个空间。 我也尝试了一个s.split('px')[0]s.replace(/ *px/g, '')函数,发现速度较慢。

随意添加额外的testing用例。