将CharacterSet转换为String或数组或字符集

时间:2019-04-02 10:56:17

标签: swift nscharacterset

Fondation具有CharacterSet结构(桥接到NSCharacterSet),用于管理字符集,例如,在处理Formatter实例时。令人惊讶的是,CharacterSet不是Set,尽管功能和目的是完全相同的。不幸的是,CharacterSet不是Collection以太,所以现在我不知道如何检索其元素。

// We can initialize with String
let wrongCharacterSet = CharacterSet(charactersIn: "0123456789").inverted
// but how can we get the characters back ?
var chSet = CharacterSet.decimalDigits
let chString = String(chSet) // doesn't work
let chS = Set(chSet) // doesn't work
let chArr = Array(chSet) // doesn't work

1 个答案:

答案 0 :(得分:0)

我对解决方案做了一些修改,可以在@Larme和@vadian指出的答案中找到。两个答案都以相同的here结尾。我想要的只是看一下集合的内容。是的,这并不常见。 事实证明,获取cin.get()的所有元素的唯一方法是遍历所有可能的unicode标量,并检查它们是否属于集合。我对我们可以在CharacterSetSet s甚至Array之间切换这样的单词感到很奇怪。 进行修改的原因是并试图加速该功能。我的粗略实验表明,即使最后创建一个字符串,使用标量也要快30%。

Dictionaries

UPD:是的,问题是重复的,并且存在更好的algorithm