84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
例如有字串a = "8px";數字的位數不一定,想截取出數字,想的是a.substring(0,a.indexOf("p")),本來想用a.substring(0,-2);但一查才知道substring參數不能為負數,但是覺得a.substring(0,a.indexOf("p"))有點麻煩,請問有更直接的最佳化方法嗎?
ringa_lee
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
var a="88px";
如果格式一致,前面部分都是数字且只需要提取数字可以用:
parseInt(a);//88
用正则
第一种可以用substring方法:a.substring(0,a.length-2)
第二种可以用正则表达式:var a='8px';a.replace(/px$/ig,'')
parseInt,parseFloat,slice,regexp
用正则最方便
对你们无语了,难道不能用parseInt, parseFloat