2013-01-25 77 views
-1

我有一個字符串在字符串的極端替換單引號雙引號只有

var myString = "[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]"; 

我想要的輸出

myString = '[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"}]'; 
+0

你試過嗎? – Blender

+0

您知道在您發佈的示例中,引號不是字符串的一部分,對吧? –

+0

是與正則表達式,但它取代了所有的雙引號。問題是......我不知道雙引號中會包含什麼內容。我來自後端 – Bhuvan

回答

0

您可以用.slice()做到這一點:

var newString = "'" + myString.slice(1, -1) + "'"; 

或與正則表達式:

var newString = myString.replace(/^"|"$/g, "'"); 
+0

這將刪除括號。 OP似乎對字符串文字標記本身有問題。 –

+0

@DavidHedlund:我不確定'myString'實際上是一個JavaScript變量還是隻是說「我的字符串是」的一種方式。沒有任何澄清,我無法確定。 – Blender

+0

確實。這是一個複雜的問題。我敢打賭,它的根源在於誤解而非實際問題。 –

1

如果使用雙引號創建一個字符串,則不能在其中包含未轉義的雙引號。

你不能寫

var myString = "A "B" C"; 

這將是一個語法錯誤。然而,

var myString = "A \"B\" C"; 

是完全一樣的事情:

var myString = 'A "B" C'; 

所得的myString值將是正好相同。這不像第一個例子將在最終字符串中包含任何轉義標記。逃生只是在那裏幫助創建字符串,在這兩種情況下這都是A "B" C;在記錄時通常用雙引號括起來,表示該類型是一個字符串。

所以,如果你運行console.log(myString);它會說"A "B" C",但myString簡直是A "B" C。這只是開發人員工具代表字符串的結果。字符串本身並沒有說它是用雙引號創建的。開發人員工具同樣可以用特殊顏色記錄該值,但用雙引號括起來恰好是表示字符串的傳統方式。

+0

+1真棒解釋。只需添加:這些「外部」引號不會影響JSON(正如您所說的,只要您做適當的轉義,它們就會返回完全相同的字符串值),實際上,外部引號不應該是字符串值的一部分否則會導致格式錯誤的JSON。 –

相關問題