2017-03-03 58 views
0

我已經在javascript中創建了一個示例數據生成器,並且輸出是一個被串化的json對象。現在我需要從輸出中的每個元素中刪除第一個/最後一個反斜槓。刪除第一個和最後一個反斜槓?

電流輸出是:

array(\"'This is' a test\",\"Testie Test\",\"Bob the tester\",\"Wanna test "some" more\") 

輸出需要:

array("'This is' a test","Testie Test","Bob the tester","Wanna test \"some\" more") 

我需要的是雙引號進行轉義文本,但我需要的數據是除去第一和最後一個反斜槓然後複製並上傳到另一個工具,並用這些反斜槓打破。

我可以很容易地刪除所有的反斜線用一個簡單的正則表達式:

var = var.replace(/\\\\/g,"") 

然而然後裏面的文本不再被轉義。我嘗試過更復雜的正則表達式來完成這個任務,但沒有成功。任何幫助表示讚賞。

感謝

+2

爲什麼要刪除所有反斜槓? JSON使用反斜槓編碼文本以避免引號。 –

+0

什麼是原始的JSON?格式爲'{「name」:value,...}' –

+0

@BitByte因爲第一個/最後一個反斜槓打破了使用這個示例數據的第二個工具。在我可以創建第二個工具的Web服務之前,這是一個必要的步驟。 – jp17

回答

0

嘗試使用JSON.parse(object)。它應該返回被解析的整個對象。

此外,console.log(JSON.parse(object)["data"])應該將整個值作爲數組打印。

根據您的意見,考慮到JSON格式爲這樣:{"records": [{"id":"xxxx", "data":["text","text","text",...]},{"id":"xxx", "data":[ ..... ]},...]}

var parsed = JSON.parse(object); 
var output = [] 
for (var i = 0; parsed["records"].length < i; i++) { 
    output.push(parsed["records"][i]["data"]); 
} 
document.getElementById("textareafieldid").value = output; 

請務必設置文本框的ID在腳本的HTML定義相同。

<textarea id='textareafieldid'></textarea> 
+0

輸出轉到Web應用程序中的textarea字段而非控​​制臺。道歉我是新來的JavaScript和我沒有輸出時,試圖這 – jp17

+0

這是瀏覽器的JavaScript?沒有運行節點或任何東西? –

+0

是的正確...我參與了項目,並在重寫過程中的PHP和創建一個Web服務,但需要解決這個問題,因爲它經常使用 – jp17

1

^(\\.)*(\\).$將最後一個字符前右匹配第一個反斜槓和反斜槓。

取而代之的正則表達式,你可以,如果你的字符串以一個\"結束了\"直接測試:

if (s.startsWith('\\"') && s.endsWith('\\"')) { 
    clean_s = '"' + s.substr(2, s.length-4) + '"'; 
} 
1

您可以使用此正則表達式來匹配你的字符串:

^\\(.*)\\(")$ 

第一個捕獲組將捕獲除起始反斜線整個字符串,但它不會捕捉到最後qoutes。最後的qoutes將在第2組中捕獲。您可以連接這兩個組以獲得所需的輸出!

Regex Demo