删除字符串最后两个字符的简单方法是什么?
9 回答
要245px
在 245 中转换,只需运行:
parseInt('245px', 10);
它只保留前导数字并丢弃所有其他数字。
采用
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
转换末尾没有“px”的像素值。使用 parseFloat。
parseFloat('245px'); // returns 245
注意:如果使用 parseInt,如果值是整数,则该值是正确的。如果该值为 245.50px 之类的小数,则该值将四舍五入为 245。
这正是您所要求的:删除字符串的最后两个字符:
s.substr(0, s.length-2);
令人惊讶的是, 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, '')
函数,发现都比较慢。
随意添加额外的测试用例。
尽管 parseInt() 是一个不错的选择,但拥有许多其他解决方案仍然很好
var pixels = '245px';
Number(pixels.replace('px', ''));
检查http://www.w3schools.com/jsref/jsref_substr.asp 在你的情况下会像
string.substr(0, string.length - 2)
我更喜欢:
"245px".replace(/px/,'')*1
因为它不在输入周围。
此外,*1
用于将其转换为 int。
substr()
现在是一个遗留功能;改用substring()
:(在这种情况下语法相同)
str.substring(0, str.length-2);
或者,使用slice()
:
str.slice(0, -2);
slice()
看起来更干净,IMO。负值从最后算起。