javascript - js 字符串替换如何使用数组?
天蓬老师
天蓬老师 2017-04-11 11:17:49
[JavaScript讨论组]

例如有一个文本'abc{xdf}efg{dfg}ijk{232}'
正则是{.*?},匹配每一个{}里面的东西
现在我有一个数组['d','h','l']
请问怎么才能用数组按顺序替换掉{}里的内容,变成abcdefghijkl

注意实际情况是数组的长度是未知的,也就是说正则匹配到的个数是未知的。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
PHP中文网
var str = 'abc{xdf}efg{dfg}ijk{232}';
var arr = ['d', 'h', 'l'];
var result = str.match(/\{.*?\}/g);
for (var i = 0; i < result.length; i++) {
    str = str.replace(result[i], arr[i])
}
console.log(str);
//abcdefghijkl

但我猜你需要的是字符串模板:
https://segmentfault.com/a/1190000004428305

ringa_lee

http://zhaomenghuan.github.io/#!/blog/20160626 看看这篇文章吧

怪我咯
var format = 'abc{xdf}efg{dfg}ijk{232}';
var arr = ['d','h','l'];
for(var i=0; i < arr.length; i++){
 format = format.replace(/\{.*?\}/, arr[i]);
}
console.log(format);
天蓬老师
var str = 'abc{xdf}efg{dfg}ijk{232}';
var arr = ['d', 'h', 'l'];

function replace(str, arr){
    var i = 0;
    return str.replace(/({.*?})/g, (all,match) => {
        return match = arr[i++];
    })
}

replace(str, arr);
ringa_lee

很简单啊,你就循环你的数组啊,

然后就用当前元素值去替换正则匹配到的内容

至于到后来匹配不到的情况就随你怎么处理了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号