Javascript node.js使用变量搜索并替换json输出中的精确字符串
我发现了很多帖子,展示了如何在使用通配符或直接搜索字符串时搜索和替换引号之间的精确字符串。然而,当在Javascript node.js使用变量搜索并替换json输出中的精确字符串,javascript,json,Javascript,Json,我发现了很多帖子,展示了如何在使用通配符或直接搜索字符串时搜索和替换引号之间的精确字符串。然而,当在for循环中使用变量时,我很难获得正确的语法 我在数据库的json输出中有很多键 myJson = JSON.stringify(rowsMap); 给予 现在我想在JSON上循环,并使用第二个k:v对替换一些键字符串 for (var myVal in myPairs) { myJson = myJson.replace(RegExp(myVal, "g"), myPairs
for
循环中使用变量时,我很难获得正确的语法
我在数据库的json输出中有很多键
myJson = JSON.stringify(rowsMap);
给予
现在我想在JSON上循环,并使用第二个k:v对替换一些键字符串
for (var myVal in myPairs) {
myJson = myJson.replace(RegExp(myVal, "g"), myPairs[myVal]);
....
}
现在,如果值是abc到777我得到以下结果
{
"myStuff": [
{
"777": "val_de_1",
"777xz": "val_xc_1",
"mn777": "val_777_1"
},
{
"777": "val_de_2",
"777xz": "val_xc_2",
"mn777": "val_777_2"
},
{
"777": "val_de_3",
"777xz": "val_xc_3",
"777bc": "val_777_3"
}
}
但我真的想要
{
"myStuff": [
{
"777": "val_de_1",
"abcxz": "val_xc_1",
"mnabc": "val_abc_1"
},
{
"777": "val_de_2",
"abcxz": "val_xc_2",
"mnabc": "val_abc_2"
},
{
"777": "val_de_3",
"abcxz": "val_xc_3",
"mnabc": "val_abc_3"
}
}
我见过在文字字符串(而不是变量)前后使用括号、大括号和引号的变化
最有效的处理方法是什么?
我能以笨拙的方式做这件事
for (var myVal in myPairs) {
myNewVal = "\""+myVal+"\"";
myNewRep = "\""+myPairs[myVal]+"\"";
myJson = myJson.replace(RegExp(myNewVal, "g"), myNewRep);
....
}
注意,我正在寻找一种解决方案,其中regexp必须查找引号之间的确切字符串,而不包括引号。这样做的想法是,如果找到字符串,只执行
myNewRep
,因此我认为这样做会更快。可以用引号分割字符串
“'abc”“。匹配(/”(.*?/)您可以用引号分隔字符串
““abc””。匹配(/”(.*)/)您可以将json键字符串替换为
/[abc]/g
这将替换确切的字符串
我试过一些火柴
abc-比赛
“abc”-比赛
abcd-不匹配
-尝试此测试。您可以将json键字符串替换为
/[abc]/g
这将替换确切的字符串
我试过一些火柴
abc-比赛
“abc”-比赛
abcd-不匹配
-尝试此项测试。根据问题,此项不适用于变量。regexp必须查找引号之间的确切字符串,而不包括引号。根据问题,这不适用于变量。regexp必须查找引号之间的确切字符串,而不包括引号。
for (var myVal in myPairs) {
myNewVal = "\""+myVal+"\"";
myNewRep = "\""+myPairs[myVal]+"\"";
myJson = myJson.replace(RegExp(myNewVal, "g"), myNewRep);
....
}