用javascript中的双引号替换引号

问题描述:

我搜索正则表达式或其他方式来用双引号替换引号。但我想继续保持报价。举例保留在jusqu'à的报价。 我试图找到一个正则表达式,但我没有找到。用javascript中的双引号替换引号

输入:

{'nom': 'mulot', 'code': 'apodemus agrarius', 'descriptif': 'mammifère', 4'reconnaissance': "Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.", 'conditions': ' ', 'sources': ' '} 

OUTPUT:

{"nom": "mulot", "code": "apodemus agrarius", "descriptif": "mammifère", "reconnaissance": "Petit mammifère rongeur sauteur jusqu'à 80 cm et nageur.", "conditions": ' ', "sources": " "} 

非常感谢。

+0

做一个JSON.parse(JSON.stringify({'nom':'mulot','code':'apodemus agrarius','descriptif':'mammifre','侦察':“Petit mammif're rongeur sauteur jusqu's 80 cm et nageur。“,'conditions':'','sources':''})) –

+1

输入是字符串还是对象? – gurvinder372

+0

是输入字符串,我想成为一个输出字典对象。 – JonathanPetit

基本上,你需要在逗号上分开,循环,在分号上分开,循环,替换引号,将它们连接在一起,然后再将第一个分割回来。

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);

有问题这个”

  1. 它不检查"字符串的内部。会造成问题。
  2. 如果字符串包含,这将打破
  3. 如果字符串包含:它将brea ķ
  4. 不处理的阵列/对象内部

另一种解决方案(其是不是100%安全的)是EVAL()或新的功能()

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));

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