whitespaceAndNewlineCharacterSet()中有哪些字符?

时间:2016-02-27 21:48:18

标签: cocoa unicode

我正在解析一些讨厌的文件 - 你知道,在单行中混合使用逗号,空格和制表符分隔符,然后通过文本编辑器运行它,该文本编辑器在第65列用CRLF包装。啊。

作为我在Cocoa中解析它的努力的一部分,我使用Apple的whitespaceAndNewlineCharacterSet。但是,完全是什么?文档说“Unicode General Category Z *,U000A~U000D和U0085”。我能找到最后三个(85很有意思,但是〜是什么意思,什么是通用类别Z *?

那里有任何Unicode专家吗?

2 个答案:

答案 0 :(得分:2)

〜表示"通过&#34 ;;因此,U000A,B,C和D.

短语" General Category Z *"是"任何通用类别属性是以Z开头的三个类别之一的字符。"因此,各种形式的空间(0020,00A0,1680,2000至200A,202F,205F,3000),以及线分隔符(2028)和段落分隔符(2029)。

答案 1 :(得分:1)

NSCharacterSet是一个不透明的类,不会轻易公开其内容。你必须更多地将其视为会员资格"规则服务而不是字符列表。

这可能是一种有点残酷的方法,但您可以通过遍历所有16位标量值并检查集合中的成员资格来获取NSCharacterSet中的成员列表:

 let charSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
 for i in 0..<65536
 {
    let u:UInt16 = UInt16(i)
    if charSet.characterIsMember(u)
    { print("\(u): \(Character(UnicodeScalar(u)))") }
 }

这为不可显示的字符集提供了令人惊讶的结果,但它可以回答你的问题。