我搜索正则表达式或其他方式用双引号替换引号。但我想保持引用。例如,在jusqu'à
中保留引用。
我试图找到一个正则表达式,但我没有找到。
INPUT:
{'nom': 'mulot', 'code': 'apodemus agrarius', 'descriptif': 'mammifère', 4'reconnaissance': "Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.", 'conditions': ' ', 'sources': ' '}
输出:
{"nom": "mulot", "code": "apodemus agrarius", "descriptif": "mammifère", "reconnaissance": "Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.", "conditions": ' ', "sources": " "}
非常感谢。
答案 0 :(得分:0)
基本上你需要在逗号上拆分,循环,在冒号上拆分,循环,替换引号,将它们连接在一起,然后将第一个拆分连接在一起。
var str = "{'nom': 'mulot', 'code': 'apodemus agrarius', 'descriptif': 'mammifère', 'reconnaissance': \"Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.\", 'conditions': ' ', 'sources': ' '}";
var rep = "{" + str.substr(1, str.length - 2).split(/\s?,\s?/).map(function(v) {
return v.split(/\s?:\s?/).map(function(p) {
return p.replace(/^\s?'([^']+)'\s?$/, '"$1"');
}).join(":");
}).join(",") + "}";
console.log(rep);

这个问题"
"
。会引起问题。,
,则会中断:
,则会中断另一种解决方案(不是100%安全)是eval()或新的Function()
var str = "{'nom': 'mulot', 'code': 'apodemus agrarius', 'descriptif': 'mammifère','reconnaissance': \"Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.\", 'conditions': ' ', 'sources': ' '}";
var arr = new Function("return " + str)();
console.log(arr);
console.log(JSON.stringify(arr));

现在是最好的解决方案,首先解决输出/输入的问题。