gpt4 book ai didi

javascript - 在 JavaScript 中合并两个键=值对字符串

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:28 26 4
gpt4 key购买 nike

我正在尝试想出一种有效的方法来覆盖如下所示的 2 个字符串:

str1 = "width=800,height=600,resizable=no,titlebar=no";
str2 = "width=100,height=100";

在上面的示例中,str2 应该覆盖 str1 以生成 str3:

str3 = "width=100,height=100,resizable=no,titlebar=no";

在我的测试中,我将 str2 变成了一个数组,并根据 str1 中的匹配项测试了每个键。

谁能想到一种更有效的方式来写这个:

str1 = "width=800,height=600,resizable=no,titlebar=no";
str2 = "width=100,height=100";
sArray = str2.split(",");

for( var i = 0; i < sArray.length; i++ ) {
var key = sArray[i].match(/(\w+)=/gi).toString().replace("=", ""),
in_str1 = str1.search(key),
replace_pattern = new RegExp(key+"=(\\w+)", "gi");

if(in_str1 !== -1){
str1 = str1.replace(replace_pattern, sArray[i]);
} else {
str1 = str1 + "," + sArray[i];
}
}

最佳答案

这是一个非常简洁的基于正则表达式的解决方案:

str3 = str2 + "," + str1;

while ((temp = str3.replace(/\b([a-z]+)(=.*)\b\1=[^,]*,?/, "$1$2")) != str3) {
str3 = temp;
}

它的工作原理是将覆盖字符串添加到可覆盖字符串之前,然后重复去除连接字符串中稍后出现的重复项,直到没有重复项为止。

如果任一字符串可以为空,或者是否允许任何类型的转义,或者如果键可以用字母以外的其他方式命名,则需要多加注意。

关于javascript - 在 JavaScript 中合并两个键=值对字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408241/

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