88

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

4

9 回答 9

199

245px在 245 中转换,只需运行:

parseInt('245px', 10);

它只保留前导数字并丢弃所有其他数字。

于 2011-02-01T08:10:50.563 回答
40

采用

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

于 2011-02-01T08:13:26.780 回答
22

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

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

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

于 2014-02-21T04:08:48.607 回答
17

这正是您所要求的:删除字符串的最后两个字符:

s.substr(0, s.length-2);
于 2011-02-01T08:12:46.663 回答
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]ands.replace(/ *px/g, '')函数,发现都比较慢。

随意添加额外的测试用例。

于 2014-07-20T21:14:44.217 回答
3

尽管 parseInt() 是一个不错的选择,但拥有许多其他解决方案仍然很好

var pixels = '245px';
Number(pixels.replace('px', ''));
于 2019-11-27T07:41:39.963 回答
0

检查http://www.w3schools.com/jsref/jsref_substr.asp 在你的情况下会像

string.substr(0, string.length - 2)
于 2011-02-01T08:13:20.693 回答
0

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

因为它不在输入周围。

此外,*1用于将其转换为 int。

于 2018-12-13T02:10:54.563 回答
0

substr()现在是一个遗留功能;改用substring():(在这种情况下语法相同)

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

或者,使用slice()

str.slice(0, -2);

slice()看起来更干净,IMO。负值从最后算起。

于 2020-06-23T16:38:57.617 回答