打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
正则表达式中使用变量

  首先引入一道题:完成下面的函数。

/*        @Description:使用传入的参数格式化字符串string        用第一个参数替换{0},第二个参数替换{1}...        @param:string 格式如 this is test {0}{1}        @param:data 如果data=hello,用该值替换string后的值为          this is test hello{1}        */        function stringFormat(string,data)        {                    }

  我想到得解决方案是遍历实参,逐个替换模板字符串中相应位置的值。

  

function stringFormat(string,data){    for(var i=1;i<arguments.length;i++)    {        string = string.replace(eval('/\\{'+(i-1)+'\\}/g'),arguments[i]);    }                return string;}

 

   这里面使用正则表达式有两点需要注意:

   1、正则表达式中使用变量。一定要使用eval将组合的字符串进行转换,不能直接将字符串传入给replace函数。

   2、正则表达式中{}  []等保留符号,前面需要加转义符 \ 标识,而且需要加两个,如果加一个最终组合出的正则表达式为{0},这表示匹配0次,而并不是匹配字符串"{0}"。

 

  另外一种实现方式,不使用eval,正则表达式使用RegExp创建。

function stringFormat(value,reg1){        for(var i=1;i<arguments.length;i++)    {        var reg=new RegExp('\\{'+(i-1)+'\\}');        value=value.replace(reg,arguments[i]);    }        return value;}

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JavaScript
LR常用函数整理
给JavaScript初学者的24条最佳实践
在JS中用Replace 全部替换字符
LoadRunner字符串与参数的操作及转换技巧
Matlab eval()函数使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服