gpt4 book ai didi

swift - 用有效的 URL 字符替换字符串中的所有特殊字符

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:40 27 4
gpt4 key购买 nike

我不知道如何替换字符串中的所有特殊字符并将其转换为可在 URL 中使用的字符串。

我用它做什么:我正在上传一张图片,将其转换为 base64,然后将其传递给 Laravel 框架,但是 base64 字符串 可以包含 +,/,\ 等改变了 URL 的含义。

我可以用以下代码替换 + 符号:

let withoutPlus = image.stringByReplacingCharactersInRange("+", withString: "%2B")

但是我不能将它用作 NSString 来尝试更改其他字符。

肯定有一种方法可以只针对每个特殊字符并将其转换为 URL 中可用的内容吗?

最佳答案

您可以使用 stringByAddingPercentEncodingWithAllowedCharacters根据需要转义字符。您向它传递一个 NSCharacterSet,其中包含对该字符串有效的字符(即您不想想要替换的字符)。有一个内置的 NSCharacterSet 用于 URL 查询字符串中允许的字符,这将帮助您完成大部分工作,但它包括 +/所以你需要从集合中删除那些。您可以通过制作该集合的可变副本然后调用 removeCharactersInString 来做到这一点:

let allowedCharacters = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as NSMutableCharacterSet
allowedCharacters.removeCharactersInString("+/=")

然后你可以在你的字符串上调用 stringByAddingPercentEncodingWithAllowedCharacters,传入 allowedCharacters:

let encodedImage = image.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters)

请注意,它将返回一个可选的 String(String?),因此您可能希望使用可选绑定(bind):

if let encodedImage = image.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters) {
/* use encodedImage here */
} else {
/* stringByAddingPercentEncodingWithAllowedCharacters failed for some reason */
}

示例:

let unencodedString = "abcdef/+\\/ghi"

let allowedCharacters = NSCharacterSet.URLQueryAllowedCharacterSet().mutableCopy() as NSMutableCharacterSet
allowedCharacters.removeCharactersInString("+/=")

if let encodedString = unencodedString.stringByAddingPercentEncodingWithAllowedCharacters(allowedCharacters) {
println(encodedString)
}

打印:

abcdef%2F%2B%5C%2Fghi

关于swift - 用有效的 URL 字符替换字符串中的所有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com