在javascript中用双引号替换引号

时间:2017-04-07 10:23:28

标签: javascript json regex

我搜索正则表达式或其他方式用双引号替换引号。但我想保持引用。例如,在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": " "}

非常感谢。

1 个答案:

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




这个问题"

  1. 它不会检查字符串中的"。会引起问题。
  2. 如果字符串包含,,则会中断
  3. 如果字符串包含:,则会中断
  4. 不处理
  5. 中的数组/对象

    另一种解决方案(不是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));
    
    
    

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