2017-07-29 355 views
0

我有這樣的字符串,其中\/應該是字符串值的一部分。在Swift字符串文字中換行反斜槓

["medium-video\/mp4", 
"hd720-video\/mp4", 
"medium-video\/webm", 
"small-video\/3gpp"] 

Swift抱怨反斜槓。我試過\\/,但是當嘗試使用它們時,字符串有\\/而不是\/。不知道如何解決這個問題。

如果我使用雙反斜槓打印數組,它們只出現在字符串中,而不是我期待的\/

["medium-video\\/mp4", "hd720-video\\/mp4", "medium-video\\/webm", "small-video\\/3gpp"] 

回答

3

(假設了 「/」 我很期待好像壞的假設。只是保留在這裏作爲歷史...

只需用/替換\/

每種語言都定義了其有效的轉義序列,在Swift中(或在標準C中)\/不是有效的轉義序列,並且斜線不能轉義。

(在JSON,\/是有效的,但你沒有必要逃避斜線。)

不管怎樣,在斯威夫特:

["medium-video/mp4", 
"hd720-video/mp4", 
"medium-video/webm", 
"small-video/3gpp"] 

假設\/我期待你已經有了正確的答案。

["medium-video\\/mp4", 
"hd720-video\\/mp4", 
"medium-video\\/webm", 
"small-video\\/3gpp"] 

有一件事你錯了,我猜是你如何確認字符串數組的內容。

let arr = ["medium-video\\/mp4", 
"hd720-video\\/mp4", 
"medium-video\\/webm", 
"small-video\\/3gpp"] 

print(arr) 
["medium-video\\/mp4", "hd720-video\\/mp4", "medium-video\\/webm", "small-video\\/3gpp"] 

上面可能不是一個好方法,因爲使用斯威夫特調試符號打印出陣列的內容。要檢查字符串數組中的實際內容,請嘗試此操作。

arr.forEach {print($0)} 
medium-video\/mp4 
hd720-video\/mp4 
medium-video\/webm 
small-video\/3gpp 
+0

我不得不更新問題的文本。 SO正在逃離我的例子字符串。 =/ – Geuis

+0

@Geuis,也許你對String的文本表示及其實際內容感到困惑。當你在Swift中編寫'medium-video/mp4''時,它的實際內容是'm'''''''''''''''''''''''''''''''''''''''''''''' e「'''''''''''''''''。當JSON字符串的文本表示形式爲「medium-video \/mp4」時,其實際內容爲'm''''''''''''''''''''' ''''''''''''''''''''''''如果你想要一個帶有實際內容的字符串''m''''''''''''''''''''''''''''''''''''''''''''''''''''''''m ''p''4',你在你編輯的問題中有解決方案。請解釋你真正想要得到什麼。 – OOPer

+0

我認爲我的原始問題格式錯誤導致了一些混淆,我回過頭去糾正它。好吧,我從一個字面上是'medium-video \/mp4'的api獲取json響應中的數據,包括反斜槓。在Swift中,我正在寫一組匹配的字符串,它們需要與json字符串完全匹配,即需要與它們中的'\ /'匹配。但是當我嘗試在Swift中寫入這些變量時,反斜槓需要被轉義,但是當我做額外的''\\'''出現在值中時,例如'medium-video \\/mp4',而不是'medium-video \/mp4' – Geuis