首页 文章

在javascript中用双引号替换引号

提问于
浏览
-2

我搜索正则表达式或其他方式用双引号替换引号 . 但我想保持引用 . 例如,在 jusqu'à 中保持引用 . 我试图找到一个正则表达式,但我没有找到 .

INPUT:

{'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": " "}

非常感谢 .

1 回答

  • 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()或new 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));
    

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

相关问题