我只是想知道Swift中的(倒置)CharacterSet是如何工作的。
假设我有以下两个字符集。
let invertedNumbers = CharacterSet(charactersIn: "0123456789").inverted
let numbers = CharacterSet(charactersIn: "0123456789")
当我用print函数记录这两个字符集时,比如说
print(numbers)
它在控制台中的显示与
print(invertedNumbers)
这就是
<CFCharacterSet Items(U+0030 U+0031 U+0032 U+0033 U+0034 U+0035 U+0036 U+0037 U+0038 U+0039)>
但是,它们怎么可能完全一样呢?我非常困惑,因为它们并不是真的。当我问倒过来的那个是否含有 "a "时,它说 真正. 另一方面,未倒置的那一个说的是 假的. 而且我很喜欢它的工作方式,但是倒置的记录是不是就没有bug了呢?
在Swift中,倒置字符集确实可以使用,虽然你不能真正打印出来。
例如,如果我想对一组字符进行百分比编码,所以我可以在POST中发送它。
let myPassword = "Hi+You?"
var charset1 = CharacterSet(charactersIn: "#%;<>?[\\]^'\"{|}&+")
let urlwithPercentEscapes = myPassword.addingPercentEncoding( withAllowedCharacters: charset1.inverted)
print(urlwithPercentEscapes)
当我打印urlwithPercentEscapes时,我将对该字符组中的任何字符进行百分比编码,因为我显示的是 "withAllowedCharacters: charset1.inverted"。 如果我使用 "withAllowedCharacters: charset1",它将对不在该列表中的每个字符进行百分比编码。