NSCharacterSet譯

鏈接

NSCharacterSet

NSCharacterSet對象代表一組固定的Unicode字符值,CharacterSet橋接于它。當你需要引用語義或者其它特定Foundation行為時可以使用NSCharacterSet

概況

NSCharacterSet對象代表一組兼容Unicode的字符。NSStringNSScanner對象使用它給搜索操作分組字符,以便于可以發現搜索中的特定字符集合。有兩個公共類簇(cluster),NSCharacterSetNSMutableCharacterSet,分別給靜態動態字符集聲名正式接口。

你使用這些類創建的對象被稱為字符集對象,當不會賣到混亂時,也僅僅做為字符集。因為類簇的本質,字符集對象不能是實際的NSCharacterSetNSMutableCharacterSet類的實例,而是它們私有子類的實例。雖然字符集對象類是私有的,但它們的接口是公有的,是在其抽象類NSCharacterSetNSMutableCharacterSet中聲名的。字符集類遵守了NSCopyingNSMutableCopying協議,使得它們可以很方便的轉換成其它字符集類型。

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)
修改接收者內容,全集合為兩個集合的并集

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。