javascript中的replace()方法
javascript中有很多很好用的操作字符串和数组的方法,replace()就是其中一个。
看看基本用法
var str = '1234512345'; var newStr = str.replace('1', 'a'); console.log(newStr); // 'a234512345'
会发现replace会和indexOf类似,只找第一个匹配的字符或是字符串,如果要全局查找替换,那就要用到正则了
var str = '1234512345'; var newStr = str.replace(/1/g, 'a'); console.log(newStr); // 'a2345a2345'
再看一个用法,比如有这么一个需求,银行卡号,一共十六位,每四位之间加一个空格
var num = '1234567890123456'; var arr = []; num.replace(/\d{4}/g, function(match){ // match 代表每次匹配的字符或是字符串,类似循环的作用 // 可以输出一下这个回调的参数,会发现不光有match,还有当前匹配字符的索引,以及原字符串 console.log(arguments); arr.push(match); }); console.log(arr.join(' ')); // '1234 5678 9012 3456';
补充一个例子,上面有提到银行卡号的例子,卡号是固定16位的,那么如果是不固定的价格,每三位加逗号怎么做呢?这里又要用到正则的另外一个知识点,看demo
function splitPrice(num){ var str = num.toString().split('').reverse().join('').replace(/(\d{3})/g, '$1,').split('').reverse().join(''); if(str.length % 4 === 0){ str = str.substring(1); } return str; } console.log(splitPrice(1000)); // 1,000 console.log(splitPrice(1000000)); // 1,000,000 console.log(splitPrice(100000000000000)); // 100000,000,000,000
似乎以上的例子,把正则改一下之后可以不需要做之后的判断,待我周末去学习一下