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)系作者
  • 序言:七十年代末照弥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子进副,更是在濱河造成了極大的恐慌这揣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件影斑,死亡現(xiàn)場離奇詭異给赞,居然都是意外死亡,警方通過查閱死者的電腦和手機矫户,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門片迅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人皆辽,你說我怎么就攤上這事柑蛇。” “怎么了驱闷?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵耻台,是天一觀的道長。 經(jīng)常有香客問我空另,道長盆耽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任痹换,我火速辦了婚禮征字,結(jié)果婚禮上都弹,老公的妹妹穿的比我還像新娘娇豫。我一直安慰自己,他們只是感情好畅厢,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布冯痢。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浦楣。 梳的紋絲不亂的頭發(fā)上袖肥,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音振劳,去河邊找鬼椎组。 笑死,一個胖子當著我的面吹牛历恐,可吹牛的內(nèi)容都是我干的寸癌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼虐沥,長吁一口氣:“原來是場噩夢啊……” “哼闷旧!你這毒婦竟也來了沮峡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤溪烤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庇勃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檬嘀,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年匪凉,在試婚紗的時候發(fā)現(xiàn)自己被綠了枪眉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡再层,死狀恐怖贸铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情聂受,我是刑警寧澤蒿秦,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蛋济,受9級特大地震影響棍鳖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碗旅,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一渡处、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祟辟,春花似錦医瘫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稼锅。三九已至,卻和暖如春僚纷,著一層夾襖步出監(jiān)牢的瞬間矩距,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工怖竭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锥债,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓痊臭,卻偏偏與公主長得像赞弥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趣兄,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

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