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

似乎以上的例子,把正则改一下之后可以不需要做之后的判断,待我周末去学习一下

原文地址:https://www.cnblogs.com/fxxkhigh/p/5549533.html