如何在不使用反斜杠的情况下转义整个字符串?

问题描述 投票:0回答:2

我这里有这个字符串:

let toEscape = "http://localhost:3000/api/Tests/update?where={ \"name\": \(updateText) }"

这个字符串通常没问题,只是我连接的 API 软件 (Strongloop) 似乎不喜欢 \"name\" 处的反斜杠。如何转义整个字符串,以便不必在引号前添加反斜杠?在 C# 中,您可以在字符串的开头使用 @ 符号,据说您可以在 Objective-C 中执行相同的操作,但我在 Swift 中还无法做到这一点,至少到目前为止还不能。

ios swift strongloop
2个回答
2
投票

一个可能的解决方案是使用 NSURL(scheme:host:path:) 创建一个 NSURL 并调用absoluteString()方法

let escapedString = NSURL(scheme: "http", host: "localhost:3000", path: "/api/Tests/update?where={ \"name\": \(updateText) }")?.absoluteString

编辑:

或者更容易

let escapedString = toEscape.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

1
投票

简短回答:是的,请参阅上面的 URL 编码答案。

长答案:也许斜线不是问题。使用

\"
转义双引号多年来一直是高级语言的标准,并且在 Swift 文档中被认为是正确的语法(上面的链接)。

我注意到的是,如果你的查询参数应该是 JSON,那么它的格式是错误的。您需要将插值括起来,使其成为有效的 JSON:

let toEscape = "...?where={ \"name\": \"\(updateText)\" }"

我对 Swift 的经验为零,也没有任何 Strongloop 的经验,但我会先尝试引用

updateText
,看看问题是否有变化。

© www.soinside.com 2019 - 2024. All rights reserved.