如何打印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))
}
您会看到该集合在内部将位存储在十进制数字所在的代码位置。
我尝试打印 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))
}
您会看到该集合在内部将位存储在十进制数字所在的代码位置。