2017-04-07 9 views
-2

引用符を二重引用符で置き換えるためにRegexなどの方法で検索します。しかし、私は言葉で引用を保持したいと思います。例えば、jusqu'àに引用符をつけてください。 正規表現を見つけようとしましたが、見つけられませんでした。javascriptの二重引用符で引用符を置き換えます。

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

どうもありがとうございました。

+0

JSON.parse(JSON.stringify({'nom': 'mulot'、 'code': 'apodemus agrarius'、 'descriptif': 'mammifre'、 'reconnaissance': "プネ族の乳児はロンガーサウザー"、 'conditions': ''、 'sources': ''})) –

+1

入力は' string'か 'object'ですか? – gurvinder372

+0

は入力文字列であり、出力辞書オブジェクトになりたいです。 – JonathanPetit

答えて

0

基本的には、コンマで分割し、ループし、コロンで分割し、ループし、引用符を置き換えて、再び結合し、最初の分割を再び結合する必要があります。それは、文字列の内部で"をチェックしません、この「

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

    問題。問題が発生します。

  2. 文字列が,が含まれている場合、それは
  3. を中断します
  4. 文字列に:が含まれていると、今すぐ)
  5. は(100%安全ではない)別の解決策は、evalの()または新しい機能(ある

内の配列/オブジェクトを処理しませんkは

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

最高の解決策は、最初に出力/入力しているものを修正します。

関連する問題