gpt4 book ai didi

JavaScript 替换

转载 作者:行者123 更新时间:2023-11-30 05:52:38 24 4
gpt4 key购买 nike

在下面的代码中,JavaScript 替换函数中的 alert(a) 将提醒匹配的字符串,在本例中,将是 {name} 和 {place}。

这按照文档 javascript docs 的描述工作,即替换方法中函数的第一个参数将是匹配的字符串。在下面的代码中,alert(b) 将警告“name”和“place”,但它们周围没有花括号。

这是为什么呢?它如何去除'b'的花括号?这是一把 fiddle http://jsfiddle.net/mjmitche/KeHdU/

此外,从文档中查看这个示例,

function replacer(match, p1, p2, p3, offset, string){
// p1 is nondigits, p2 digits, and p3 non-alphanumerics
return [p1, p2, p3].join(' - ');
};

下面替换函数的 function(a,b) 中的 'b' 代表这个例子中的哪些参数?

我无法理解的部分原因可能是我不确定 javascript 会做什么,例如,如果未使用最大数量的参数,则第二个参数。

代码

var subObject = {
name: "world",
place: "google"

};

var text = 'Hello, {name} welcome to {place}';


var replace = function (s, o) {
return s.replace(/\{([^{}]*)\}/g,
function (a, b) {
alert(a);
alert(b);
var r = o[b];

return typeof r === 'string' || typeof r === 'number' ? r : a;
}
);
};

var replacedText = replace(text, subObject);
alert(replacedText); ​

最佳答案

第一个参数是你的正则表达式匹配的整个字符串(捕获组无关紧要,所以它变成了{name})。

第二个、第三个、第四个等参数是您的捕获组,因为您只有一个,所以您的第二个参数变成了name

最后两个参数是匹配的位置和整个字符串。如果愿意,您可以在回调中省略这些参数。

这是您的代码的可读性稍强的版本,它说明了替换对象中不存在的属性:

var replace = function(string, object) {
return string.replace(/\{(.*?)\}/g, function(match, group) {
return group in object ? object[group] : match;
});
};

演示:http://jsfiddle.net/KeHdU/4/

关于JavaScript 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com