2017-04-07 97 views
-2

我搜索正則表達式或其他方式來用雙引號替換引號。但我想繼續保持報價。舉例保留在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

回答

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. 如果字符串包含:它將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));

現在最好的解決方案,首先解決輸出/輸入問題。