我试图打印的内容CharacterSet.decimalDigits
:
print(CharacterSet.decimalDigits)
输出:CFCharacterSet 预定义的十进制数字集
但我的期望是这样的:
[1, 2, 3, 4 ...]
所以我的问题是:如何打印的内容CharacterSet.decimalDigits
?
我试图打印的内容CharacterSet.decimalDigits
:
print(CharacterSet.decimalDigits)
输出:CFCharacterSet 预定义的十进制数字集
但我的期望是这样的:
[1, 2, 3, 4 ...]
所以我的问题是:如何打印的内容CharacterSet.decimalDigits
?
这并不容易。字符集不是用来迭代的,它们是用来检查字符是否在其中。它们本身不包含字符,并且无法访问范围。
您唯一能做的就是遍历所有字符并根据字符集检查每个字符,例如:
let set = CharacterSet.decimalDigits
let allCharacters = UInt32.min ... UInt32.max
allCharacters
.lazy
.compactMap { UnicodeScalar($0) }
.filter { set.contains($0) }
.map { String($0) }
.forEach { print($0) }
但是,请注意,这样的事情会花费大量时间,并且不应该在生产应用程序中使用。
我认为你不能这样做,至少不能直接这样做。如果你看一下输出
let data = CharacterSet.decimalDigits.bitmapRepresentation
for byte in data {
print(String(format: "%02x", byte))
}
您会看到该集合在内部将位存储在十进制数字所在的代码位置。