swift - CharacterSet 和 CharacterSet.inverted 打印出来的一样
问题描述
我只是想知道 Swift 中的(倒置的)CharacterSet 是如何工作的。
假设我有以下两个字符集:
let invertedNumbers = CharacterSet(charactersIn: "0123456789").inverted
let numbers = CharacterSet(charactersIn: "0123456789")
当我使用打印功能记录两个字符集时
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”时,它说true。另一方面,不倒置的说false。而且我喜欢它的工作方式,但是倒置的日志记录不是错误的吗?
解决方案
倒转字符集在 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”,它将对不在该列表中的每个字符进行百分比编码。
推荐阅读
- sql-server - 有没有办法为 SSIS 包的变量添加锁?
- css - 如何根据 URL id 更改我的 CSS?
- python - 如何证明`fake.unique.ascii_free_email()`无论运行多少次都不会返回重复的电子邮件地址
- android - W/SyncTree:在 /users 处监听失败:DatabaseError:Permission denied 和 E/AndroidRuntime:FATAL EXCEPTION:main for unknow reason
- asp.net-core - 排队 .Net Core SignalR 调用请求
- mule - 为 Mule 处理 OData 中的 ComplexType json
- java - 无法检测在 System.out.print() java 之后是否按下了输入键
- python - 有没有更好的方法来检查字典中是否存在多个键并根据找到的键为变量分配多个值
- c# - XFC0009 找不到“ItemsSource”的属性、BindableProperty 或事件,48
- swift - 在mapbox ios中使用动画作为注释