Javascript 如何将对象中键值的双引号转换为单引号?

Javascript 如何将对象中键值的双引号转换为单引号?,javascript,node.js,regex,Javascript,Node.js,Regex,要生成.js文件,我尝试转换如下字符串: let file=“module.exports={ 插件:[ “盖茨比头盔”, { “解析”:“盖茨比源文件系统”, “选择”:{ “名称”:“图像”, “路径”:“${uuuu dirname}/src/images”, }, }, “盖茨比变形金刚”, “盖茨比·夏普”, ], } " 为此: let expectedFile=“module.exports={ 插件:[ “盖茨比头盔”, { “解析”:“盖茨比源文件系统”, “选择”:{ “名

要生成.js文件,我尝试转换如下字符串:

let file=“module.exports={
插件:[
“盖茨比头盔”,
{
“解析”:“盖茨比源文件系统”,
“选择”:{
“名称”:“图像”,
“路径”:“${uuuu dirname}/src/images”,
},
},
“盖茨比变形金刚”,
“盖茨比·夏普”,
],
}
"
为此:

let expectedFile=“module.exports={
插件:[
“盖茨比头盔”,
{
“解析”:“盖茨比源文件系统”,
“选择”:{
“名称”:“图像”,
“路径”:“${u dirname}/src/images`,
},
},
“盖茨比变形金刚”,
“盖茨比·夏普”,
],
}
"
我想这样做是为了在字符串中使用变量
${\uu dirname}
。我尝试了很多类似
.replace(/“/g,`')
的方法,但它破坏了创建的.js文件。 否则,每个键的值应按如下方式转换:

{
“名称”:“图像”,
“路径”:“${uuuu dirname}”,
}
这听起来像是一个问题,没有太多琐碎的解决方案。所以这里的问题是,javascript是一种非常规语言,你根本无法使用正则表达式来做你想做的事情,因为上下文是必需的。你需要一个解析器。我认为你试图做的只是插入值和模板文本只是达到这一目的的一种手段

只需使用简单的替代品 使用正则表达式替换已知上下文中的简单插值值

const INTERPOLATION\u MATCH=/\$\{\s*(\w+)\s*\}/g;
常量插值=(字符串,值)=>{
返回字符串.replace(插值匹配,(\u,名称)=>{
让结果=”;
常量值=值[名称];
if(值!=null){
结果=值;
}
返回结果;
});
};
//这样做只是为了允许不使用模板文本的多行数据。
const file=JSON.stringify({
插件:[
“盖茨比头盔”,
{
“解析”:“盖茨比源文件系统”,
“选择”:{
“名称”:“图像”,
“路径”:“${uuuu dirname}/src/images”,
},
},
“盖茨比变形金刚”,
“盖茨比·夏普”,
]
},空,2);

console.log(interpolate(file,{uuu dirname:{foo}));
路径
属性中唯一一个将要转换
${someExpression}
模板文字语法的属性吗?没有多少属性可以是动态的,谢谢解释,但我需要
${uu dirname}
保持这种“路径”:
${uu dirname}
。不是这样:
“路径”:“foo”