NSCharacterSet
NSCharacterSet對象代表一組固定的Unicode字符值,CharacterSet橋接于它。當你需要引用語義或者其它特定Foundation行為時可以使用NSCharacterSet。
概況
NSCharacterSet對象代表一組兼容Unicode的字符。NSString和NSScanner對象使用它給搜索操作分組字符,以便于可以發現搜索中的特定字符集合。有兩個公共類簇(cluster),NSCharacterSet和NSMutableCharacterSet,分別給靜態動態字符集聲名正式接口。
你使用這些類創建的對象被稱為字符集對象,當不會賣到混亂時,也僅僅做為字符集。因為類簇的本質,字符集對象不能是實際的NSCharacterSet或NSMutableCharacterSet類的實例,而是它們私有子類的實例。雖然字符集對象類是私有的,但它們的接口是公有的,是在其抽象類NSCharacterSet和NSMutableCharacterSet中聲名的。字符集類遵守了NSCopying和NSMutableCopying協議,使得它們可以很方便的轉換成其它字符集類型。
NSCharacterSet類聲名了特定接口,用來可以管理Unicode字符集(可參見NSString類簇Unicode信息說明)。最主要最原始的方法——characterIsMember(:),為其它實例提供了基礎。它的子類為具有特定行為僅僅需要實現這個方法,外加mutableCopy(with:)。如果有更佳的性能,可以重寫bitmapRepresentation方法,否則它會為每個可以的Unicode值調用characterIsMember(:)*方法。
NSCharacterSet可以說是免稅橋接的Core Foundation中的CFCharacterSet。參見Toll-Free Bridging
API
得到標準字符集
alphanumerics 類方法 (字符)
一個包含Unicode全部類型 L星, M星 和 N星的字符集。
capitalizedLetters 類方法 (大寫)
包含Unicode所有Lt的字符集
controlCharacters 類方法
包含Unicode所有Cc 和 Cf的字符集
decimalDigits
所有Decimal Numbers(小數數字)的字符集
decomposables (可分解的)
包含的這些字符都是由字符序列組成的
illegalCharacters (非法的)
包含了非字符或者還沒定義到Unicode標準中的字符
letters (字母)
包含了所有的L星和M星
lowercaseLetters (小寫字母)
包含了所有LI字符
newlines
包含了所有換行符(U+000A ~ U+000D, U+0085, U+2028, and U+2029)。
nonBaseCharacters
包含所有的M*類型字符
punctuationCharacters (標點)
包含所有P星類型字符
symbols (符號)
包含所有S星類型字符
uppercaseLetters (大寫字母)
包含所有Lu、Lt類型字符
whitespacesAndNewlines (空白和換行)
包含所有Z星類型字符和U+000A ~ U+000D, U+0085
whitespaces
包含所有Zs和 CHARACTER TABULATION (U+0009)
得到URL編碼字符集
urlFragmentAllowed
組成URL的各個片段
urlHostAllowed
組成host URL的片段
urlPasswordAllowed
URL密碼的片段
urlPathAllowed
path URL的片段
urlQueryAllowed
query URL的片段
urlUserAllowed
userURL片段
創建自定義的字符集
init(coder: NSCoder)
init(charactersIn: String)
init(range: NSRange)
使用BitmapRepresentations創建和管理字符集
init(bitmapRepresentation: Data)
init?(contentsOfFile: String)
var bitmapRepresentation: Data
字符集的補集
var inverted: CharacterSet
測試集合成員
func characterIsMember(unichar) -> Bool
表示一個字符是否包含在字符集內
func hasMemberInPlane(UInt8) -> Bool
這里涉及到Basic Multilingual Plane ( Unicode平面映射)的東西,表示是否包含某plan的成員
func isSuperset(of: CharacterSet) -> Bool
表示是否為某集合的超集
func longCharacterIsMember(UTF32Char) -> Bool
表示是否包含一個長字符,此方法支持32位字符規范
NSMutableCharacterSet
在NSCharacterSet的基礎上加了一些內容
添加和移除字符
func addCharacter(in: NSRange)
將range范圍內的Unicode添加到接收者
func removeCharacters(in: NSRange)
將range范圍內的Unicode移除出接收者
func addCharacters(in: String)
將字符串中的字符添加到接收者
func removeCharacters(in: String)
將字符串中的字符移除出接收者
合并字符集
func fromIntersection(with: CharacterSet)
修改接收者的內容,使集合為兩個集合的交集
func formUnion(with: CharacterSet)
修改接收者內容,全集合為兩個集合的并集