【发布时间】:2021-11-01 01:52:56
【问题描述】:
我有一个可以包含任何字符的字符串,从字母数字到特殊字符,如“&,.:/!”等等。我需要对该字符串进行编码并将其发送到 Twitter。我尝试了以下方法,但一旦text 中有& 字符,它就无法正常工作:
static func shareToTwitter(text: String) {
guard let urlEscaped = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
return
}
guard let url = URL(string: "twitter://post?message=\(urlEscaped)") else {
return
}
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
} else {
guard let twitterUrl = URL(string: "https://twitter.com/intent/tweet?text=\(urlEscaped)") else {
return
}
UIApplication.shared.open(twitterUrl)
}
}
所以一个例句可能是:“I'm here & there”。相反,Twitter 将收到“我在这里”。我该如何解决这个问题?
【问题讨论】:
-
看看这篇文章How to percent encode a URL String ...看起来应该可以解决问题了。
-
出于这个原因,您不应该使用字符串插值来构建 URL。使用
URLComponents。