在Swift字符串文字中转义反斜杠

时间:2017-07-29 19:58:28

标签: swift string escaping

我有这样的字符串,其中\/应该是字符串值的一部分。

["medium-video\/mp4",
"hd720-video\/mp4",
"medium-video\/webm",
"small-video\/3gpp"]
斯威夫特抱怨反斜杠。我尝试了\\/,但在尝试使用它们时,字符串包含\\/而不是\/。不知道如何解决这个问题。

如果我使用双反斜杠打印数组,它们只会出现在字符串中而不是{I}期待的\/

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

1 个答案:

答案 0 :(得分: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"]

以上可能不是一个好方法,因为Swift使用调试符号来打印出Array的内容。要检查字符串数组中的实际内容,请尝试此操作。

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