在Swift字符串文字中换行反斜杠
问题描述:
我有这样的字符串,其中\/
应该是字符串值的一部分。在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"]
答
(假设了 “/” 我很期待) 好像坏的假设。只是保留在这里作为历史...
只需用/
替换\/
。
每种语言都定义了其有效的转义序列,在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
我不得不更新问题的文本。 SO正在逃离我的例子字符串。 =/ – Geuis
@Geuis,也许你对String的文本表示及其实际内容感到困惑。当你在Swift中编写'medium-video/mp4''时,它的实际内容是'm'''''''''''''''''''''''''''''''''''''''''''''' e“'''''''''''''''''。当JSON字符串的文本表示形式为“medium-video \/mp4”时,其实际内容为'm''''''''''''''''''''' ''''''''''''''''''''''''如果你想要一个带有实际内容的字符串''m''''''''''''''''''''''''''''''''''''''''''''''''''''''''m ''p''4',你在你编辑的问题中有解决方案。请解释你真正想要得到什么。 – OOPer
我认为我的原始问题格式错误导致了一些混淆,我回过头去纠正它。好吧,我从一个字面上是'medium-video \/mp4'的api获取json响应中的数据,包括反斜杠。在Swift中,我正在写一组匹配的字符串,它们需要与json字符串完全匹配,即需要与它们中的'\ /'匹配。但是当我尝试在Swift中写入这些变量时,反斜杠需要被转义,但是当我做额外的''\\'''出现在值中时,例如'medium-video \\/mp4',而不是'medium-video \/mp4' – Geuis