2016-04-10 62 views
0

比方說,我有字符串:JS:一個特定的符號之間的替換報價

"Audio":[{"ID":"0","Codec": "AC-3","Info":"192 Kbps, 48.0 KHz (2 channels)","Language":"Spanish (##He aqui "el teléfono que nunca suena" pero debería##)","Default":"Yes"}] 

我想轉換成:

"Audio":[{"ID":"0","Codec": "AC-3","Info":"192 Kbps, 48.0 KHz (2 channels)","Language":"Spanish (He aqui \"el teléfono que nunca suena\" pero debería)","Default":"Yes"}] 

正如你所看到的,我想逃避一切存在於「##」符號之間的引號,除此之外,我還可以通過使用replace()方法來實現此目的?我的意思是怎麼可能是正則表達式模式。由於

+3

你是如何在第一時間結束了無效的JSON?在那裏修復它可能會更容易,而不是在事後對問題進行討論。 – hvd

+0

我第二。切勿以「手動」方式創建JSON。始終使用數據結構和JSON序列化功能,您永遠不會遇到這種問題。每一種半途現代編程語言都可以使用JSON序列化。沒有理由不使用它。 – Tomalak

+0

來自MediaInfo的模板。沒有辦法應用某種格式,只是簡單的文本,所以我發現的唯一的意外引用的解決方案是用「##」分隔字段,所以任何人都可以有實際的響應? – user3529166

回答

1

如果你在這樣做的意圖,然後

input.replace(/##(.*?)##/g, function(match) { return match.replace(/"/g, '\\"'); }) 

應該做的工作。

這將替換所有##...##序列,並用換行符替換引號內的引號。

+0

它應該是'/ ##(.*?)##/ g' – rock321987

+0

它的工作,現在如果我只是拿出##部分...但如何 – user3529166

0
var str = '"Audio":[{"ID":"0","Codec": "AC-3","Info":"192 Kbps, 48.0 KHz (2 channels)","L##a"g##uage":"Spanish (##He aqui "el teléfono que nunca suena" pero debería##)","Default":"Yes"}]'; 
var result = str.replace(/##(.*?)##/g, function(v) { return v.replace(/"/g, "\\\""); }); 

print(result) 

Ideone Demo

相關問題