Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除";px“;从245px开始_Javascript_String_Variables_Erase - Fatal编程技术网

Javascript 如何删除";px“;从245px开始

Javascript 如何删除";px“;从245px开始,javascript,string,variables,erase,Javascript,String,Variables,Erase,删除字符串最后两个字符的简单方法是什么?要在245中转换245px,只需运行: parseInt('245px', 10); 它只保留前导数字,并丢弃所有剩余的。这正是您要求的:删除字符串的最后两个字符: s.substr(0, s.length-2); 检查 在你的情况下 string.substr(0, string.length - 2) 使用 其中10是基数定义的parseInt正在解析为一个十进制值 使用parseInt,但不要在没有 函数的作用是:解析字符串并返回整数 签名是p

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

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

parseInt('245px', 10);

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

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

s.substr(0, s.length-2);
检查 在你的情况下

string.substr(0, string.length - 2)
使用

其中10是基数定义的parseInt正在解析为一个十进制值

使用parseInt,但不要在没有 函数的作用是:解析字符串并返回整数

签名是
parseInt(字符串,基数)

第二个参数强制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)删除
px
的速度要快得多(是的,它看起来不那么干净,如果有空间,它将保留--
“250px”->“250”
而不是
“250 px”->“250”

如果您想考虑空格(您可能应该这样做),那么使用
.trim()
函数实际上会降低
substr
测试的速度,从而使
parseInt
方法变得更加优越

使用
parseInt(s,10)
的另一个好处是,您还可以获得类型转换,并可以立即开始将其应用于数学函数

因此,最终,这真的取决于你计划如何处理结果

  • 如果仅显示,则使用
    substr
    方法而不进行修剪可能是最佳选择
  • 如果您只是想看看不带px的值是否与另一个值相同
    s.substr(0,s.length-2)==0
    ,那么使用
    substr
    方法将是最好的,因为
    “250”==250
    (即使有空格)将导致
    true
  • <> LI>如果你想说明一个空间的可能性,将它添加到另一个值,或者用它来计算某个值,那么你可能需要考虑使用<代码> PARSETIN < /Cord>路由> 。

jspref上的测试占用了一个空间。我还尝试了一个
s.split('px')[0]
s.replace(/*px/g')
函数,发现两者都比较慢

请随意添加其他测试用例。

我更喜欢:
“245px”。替换(/px/,'')*1

因为它不是围绕输入的

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

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

var pixels = '245px';
Number(pixels.replace('px', ''));
substr()
is;改用:(语法与本例相同)

或使用:


slice()
看起来干净多了,依我看。负值从末尾开始倒数。

这是最灵活的方法,但您应该始终指定基数
parseInt('245px',10)
您是对的:当字符串以'0'开头时,(奇怪的)默认值是八进制。。。有多少次我在
parseInt('09')
中遇到错误!当值类似于35.5px时,您会怎么做..使用parseInt将导致35only@MuhammadUmer:您可以使用'parseFloat'(),因为我的精度编辑被拒绝,我将把它放在注释中,
parseFloat()
不像
parseInt(),因为它不能用于
rem
值。
var pixels = '245px';
Number(pixels.replace('px', ''));
str.substring(0, str.length-2);
str.slice(0, -2);