关于字符串的截取

比如有字符串 a = "8px";
数字的位数不一定,想截取出数字,想的是a.substring(0,a.indexOf("p")),本来想用a.substring(0,-2);但是一查才知道substring参数不能为负数,但是觉得a.substring(0,a.indexOf("p"))有点麻烦,请问有更直接的优化方法吗?

阅读 4.8k
8 个回答

var a="88px";
如果格式一致,前面部分都是数字且只需要提取数字可以用:
parseInt(a);//88

用正则

console.log('8px'.match(/(\d+)/)[0])

第一种可以用substring方法:a.substring(0,a.length-2)
第二种可以用正则表达式:var a='8px';a.replace(/px$/ig,'')

var a = '8px';
a.slice(0,-2);

parseInt,parseFloat,slice,regexp

var str1 = "8px",
    str2 = "88px",
    str3 = "888px",
    str4 = "8.88px";
    
str1.replace(/(.*)px/, "$1"); //8
str2.replace(/(.*)px/, "$1"); //88
str3.replace(/(.*)px/, "$1"); //888
str4.replace(/(.*)px/, "$1"); //8.88

用正则最方便

var reg = /([\d\.]+)px/; // 使用这个正则匹配
var arr = ['8px', '18px', '28px', '0.08px']
for (let i = 0, len = arr.length; i < len; i++) {
    console.log(arr[i], arr[i].match(reg)[1]);  // 结果arr[i].match(reg)[1]
}

对你们无语了,难道不能用parseInt, parseFloat

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题