2017-07-29 61 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