如果我编码这样的字符串:
var escapedString = originalString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
它不能逃脱斜线/
。
我搜索并找到了此Objective C代码:
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)unencodedString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8 );
有没有更简单的方法来编码URL,否则,如何在Swift中编写此代码?
在Swift 3中有 addingPercentEncoding
let originalString = "test/test"
let escapedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
print(escapedString!)
输出:
测试%2Ftest
在iOS 7及更高版本中, stringByAddingPercentEncodingWithAllowedCharacters
var originalString = "test/test"
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())
println("escapedString: \(escapedString)")
输出:
测试%2Ftest
以下是有用的(倒置)字符集:
URLFragmentAllowedCharacterSet "#%<>[\]^`{|}
URLHostAllowedCharacterSet "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet "#%<>[\]^`{|}
URLUserAllowedCharacterSet "#%/:<>?@[\]^`
如果要转义其他字符集,请创建一个字符集:
添加了“ =”字符的示例:
var originalString = "test/test=42"
var customAllowedSet = NSCharacterSet(charactersInString:"=\"#%/<>?@\\^`{|}").invertedSet
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(customAllowedSet)
println("escapedString: \(escapedString)")
输出:
测试%2Ftest%3D42
验证不在集合中的ASCII字符的示例:
func printCharactersInSet(set: NSCharacterSet) {
var characters = ""
let iSet = set.invertedSet
for i: UInt32 in 32..<127 {
let c = Character(UnicodeScalar(i))
if iSet.longCharacterIsMember(i) {
characters = characters + String(c)
}
}
print("characters not in set: \'\(characters)\'")
}
Swift(5.3.2) 源码编译 编译环境 Big Sur 11.2(20D64) Python3 3.9.1 CMake 3.19.3 Ninja 1.10.2 Sccache 0.2.13 (可选) Xcode 12.4(12D4e) 第一次编译失败, CMake 版本为3.17.2, 之前本地编译OCLint时安装的一个版本, 如果编译的是更新的源码, 注意版本; Xcode版本与Swif
问题内容: 我有一个这样的: 但我想将其转换为: 我怎样才能做到这一点? 问题答案: 逃避想要的角色还需要做更多的工作。 范例程式码 iOS7及以上: NSLog输出: escapedString:http%3A%2F%2Fwww 以下是有用的URL编码字符集: 创建一个结合以上所有内容的角色集: 创建一个Base64 对于Base64字符集: 对于Swift 3.0: 对于Swift 2.x:
问题内容: 我有一些来自json文件的文本。在本文中,我应用了UTF8编码,但是该编码器无法识别非标准字符,并且为大写字符,是否有一种方法可以净化我的字符串? 我的功能: 问题答案: 我找到了解决方案。 UTF8采用8位表ASCII表,而UTF16采用16位ASCII表,解决方案很简单,只需将函数修改为:
问题内容: 我正在尝试编写一个简单的方法,该方法已馈入并返回。查看Apple的文档,这似乎很简单。 以下是我丢到操场上的东西: 就目前而言,我的方法返回nil。我不确定我的错误在哪里,但是我可以放心,这对我来说是愚蠢的。感谢您的阅读。 问题答案: 或者简单地: 或扩展CLLocation: 要将地标格式化为邮寄地址,可以使用“联系人”框架: 地标 包含CLPlacemark对象的数组。对于大多数地
问题内容: 我想将Swift 4的可编码功能与json一起使用,但其中一些键没有设置名称。而是有一个数组,它们是像 您会在其中看到181个ID。有人知道如何处理181,以便我将其指定为密钥吗?该数字可以是任何数字,并且每个数字都不相同。 想要这样的事情 提前致谢。 问题答案: 请检查 :