如何打印CharacterSet.decimalDigits的内容?

时间:2019-12-21 13:40:25

标签: swift

我尝试使用以下命令打印CharacterSet.decimalDigits的内容:

print(CharacterSet.decimalDigits)
  

输出:CFCharacterSet预定义的DecimalDigit Set

但是我的期望是这样的:

  

[1、2、3、4 ...]

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

2 个答案:

答案 0 :(得分:0)

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

您唯一可以做的就是遍历所有字符,并对照字符集检查每个字符,例如:

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) }

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

答案 1 :(得分:0)

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

的输出
let data = CharacterSet.decimalDigits.bitmapRepresentation

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

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