NSString

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在當前這個時代(比如說公元2016年),如果你并不是在維護歷史遺留的文本處理代碼,沒有在每個地方都使用Unicod...
    縱橫而樂閱讀 2,845評論 3 16
  • 轉(zhuǎn)載自O(shè)bjeC中國 歷史 計算機沒法直接處理文本,它只和數(shù)字打交道。為了在計算機里用數(shù)字表示文本,我們指定了一個...
    玉米包谷閱讀 1,323評論 0 4
  • 概述 NSString 及其可變子類 NSMutableString 提供了一組用于處理字符串的 API,包括用于...
    獨木舟的木閱讀 491評論 0 0
  • NSString的內(nèi)容好豐富啊,學習了很久很久,也補充了不熟悉的內(nèi)容。 算法了解 Hash算法: 將任意長度的消息...
    _阿南_閱讀 1,200評論 2 0
  • 離開學校已經(jīng)有多久了,都已經(jīng)忘了上課的感覺?,F(xiàn)在作為興趣課老師,來得幾乎總比學生早。大家的興趣好像也不穩(wěn)定,這次很...
    citoyendumonde閱讀 240評論 0 0

友情鏈接更多精彩內(nèi)容