CharacterSet和CharacterSet.inverted打印出相同的字符。

问题描述 投票:3回答:1

我只是想知道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 xcode cocoa swift4.2
1个回答
0
投票

在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",它将对不在该列表中的每个字符进行百分比编码。

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