如何打印CharacterSet.decimalDigits的内容?

How to print a content of the CharacterSet.decimalDigits?

我尝试打印 CharacterSet.decimalDigits 的内容:

print(CharacterSet.decimalDigits)

output: CFCharacterSet Predefined DecimalDigit Set

但我的期望是这样的:

[1, 2, 3, 4 ...]

所以我的问题是:如何打印CharacterSet.decimalDigits的内容?

这并不容易。字符集不是用来迭代的,它们是用来检查字符是否在其中的。它们本身不包含字符,并且无法访问范围。

你唯一能做的就是遍历所有字符并根据字符集检查每个字符,例如:

let set = CharacterSet.decimalDigits
let allCharacters = UInt32.min ... UInt32.max

allCharacters
    .lazy
    .compactMap { UnicodeScalar([=10=]) }
    .filter { set.contains([=10=]) }
    .map { String([=10=]) }
    .forEach { print([=10=]) }

但是,请注意,这样的事情会花费大量时间,不应在生产应用程序中使用。

我认为您不能这样做,至少不能直接这样做。如果您查看

的输出
let data = CharacterSet.decimalDigits.bitmapRepresentation

for byte in data {
    print(String(format: "%02x", byte))
}

您会看到该集合在内部将位存储在十进制数字所在的代码位置。