NSString 字符串
NSString 類和它的可變的子類 NSMutableString 提供了一些了API來處理字符串,包括合并论咏、搜索优炬、修改字符串方法。NSString 對象的使用貫穿整個 Foundation 框架和其他的 Cocoa 框架厅贪,作為文字和語言功能的基石服務(wù)于整個平臺蠢护。
Overview 概要
NSString 和它的 Core Foundation 里的搭檔 CFStringRef 可以自由轉(zhuǎn)換,查閱“Toll-Free Bridging” 了解更多信息养涮。
String Objects 字符串對象
一個 NSString 對象用 Unicode 標準來編碼文本字符串葵硕,它被表示成一個 UTF–16 的代碼單元序列。所有的長度单寂、字符索引、范圍在16位平臺以字節(jié)值表示吐辙,索引從0開始宣决。
一個 NSString 對象可以與C語言緩存、NSData對象或者 NSURL 內(nèi)容進行相互轉(zhuǎn)換昏苏。NSString對象也能編解碼為 ASCII, UTF–8, UTF–16, UTF–32 或者其他的任何被 NSStringEncoding 編碼表示的字符串尊沸。
Note
一個不可變的字符串是一個在創(chuàng)建的時候被定義的文本字符串,以后不能夠被改變贤惯。一個不可變的字符是被實現(xiàn)為一個以 UTF-16 為編碼單元的數(shù)組(換句話說洼专,是一個文本字符串)。要創(chuàng)建和管理一個不可變字符串孵构,使用 NSString 類屁商。要創(chuàng)建和管理可變字符串,使用 NSMutableString?颈墅。
使用 NSString 和 NSMutableString 創(chuàng)建的對象被稱為字符串對象(或者在沒有歧義的情況下蜡镶,直接稱為字符串)雾袱。術(shù)語 C 字符串被稱為標準的 char * 類型。由于類聚簇的原因官还,字符串對象并不是 NSString 和 NSMutableString 類的真正的實例芹橡,而是他們的私有子類的其中的一個實例。盡管一個字符串對象的類是私有的望伦,但它的接口是公有的林说,這些接口被聲明在它們的抽象父類 NSString 和 NSMutableString 中。字符串類遵守了 NSCopying?和?NSMutableCopying?協(xié)議屯伞,使得我們能夠方便地將字符串從一種類型轉(zhuǎn)換成另一種類型腿箩。
對以 UTF-16 編碼的數(shù)據(jù)的理解
當從一個以 UTF-16 編碼的字符串來創(chuàng)建 NSString 對象時,如果字節(jié)順序沒有另作說明的話愕掏,NSString 假定 UTF-16 字符是高位編址(big-endian)編碼順序度秘,除非有字節(jié)順序標記(byte-order mark,BOM)饵撑,在這種情況下剑梳,BOM決定了編碼順序。當從一個 unichar 值的數(shù)組創(chuàng)建 NSString 對象時滑潘,返回的字符串總是 native-endian垢乙,因為以本地字節(jié)順序的話數(shù)組總是包含 UTF-16 代碼單元。
Subclassing Notes ?子類注意事項
有可能你會繼承 NSString(或者 NSMutableString)语卤,但是要做到這些你需要提供字符串(它沒有被子類繼承)的存儲設(shè)備并且實現(xiàn)兩個主要的方法追逮。抽象類 NSString 和 NSMutableString 是類簇的公有接口,這個類簇包含了大多數(shù)的私有的具體的類粹舵,這些類創(chuàng)建并且返回一個適合給定情況的字符串對象钮孵。你自己實現(xiàn)這個簇的子類來滿足特定的需求(在這里有討論:Methods to Override)。
Understanding Characters ?對字符的理解
一個字符串對象以 UTF–16 代碼單元序列來展現(xiàn)自己眼滤。你可以通過 length 方法來獲取一個字符串包含多少 UTF–16 代碼單元巴席,通過 characterAtIndex: 方法獲取指定的 UTF–16 代碼單元。這兩個“主要的”方法提供了對一個字符串對象的基本的訪問诅需。
然而漾唉,使用字符串更多的情況是更高水平的,將字符串看作是單獨的實體:比較兩個字符串赵刑,查找子串,合并為新字符串场刑,等等般此。如果你想一個一個字符訪問字符串,你必須理解 Unicode 字符編碼恤煞,特別是和字符序列組成相關(guān)的問題屎勘。更多詳情請參考?The Unicode Standard, Version 4.0(The Unicode Consortium, Boston: Addison-Wesley, 2003, ISBN 0-321-18578-1) and the Unicode Consortium web site:http://www.unicode.org/. See alsoCharacters and Grapheme ClustersinString Programming Guide.
本地化字符串比較基于排序規(guī)則算法(Unicode Collation Algorithm)概漱,和一個被通用區(qū)域數(shù)據(jù)倉庫(Common Locale Data Repository)量身定做的不同的語言。兩者都是統(tǒng)一編碼組織(Unicode Consortium)的項目喜喂。Unicode 是被 Unicode 公司注冊的商標玉吁。
原文鏈接:https://developer.apple.com/documentation/foundation/nsstring