Swift基礎 String資料儲存和長度

2021-07-26 22:22:17 字數 1716 閱讀 8256

swift中字串的儲存機制與其它語言不同,採用的不是固定位元組方式儲存字元,每個字元占用的位元組數可能不同。

當我們需要知道乙個字串有多少字串時,我們往往想知道的是我們所看到的字元數,而非儲存的位元組數。

乙個字元可能需要1,2,3,4個位元組來儲存。

英文:1個位元組

***: 2 個位元組? --- 沒找到例子

中文:3個位元組

emoji表情字元:4個位元組

charaters.count表示有多少字元,也就是我們所見到有幾個字元,而不關心其儲存方式。

與unicodescalars.count是一樣的。

結果:utf8:83 utf8:119 utf8:105 utf8:102 utf8:116 utf8:232 utf8:175 utf8:173 utf8:232 utf8:168 utf8:128

utf16:83 utf16:119 utf16:105 utf16:102 utf16:116 utf16:35821 utf16:35328

為了方便使用,我們可以擴充套件string的屬性:

//自定義字串長度的計算屬性

extension string

}

language.length   //returns 7
我們再看看官方的例子,說的比較清楚:

這是乙個混有不同型別字元的例子,狗頭是表情字元,占用4個位元組。

1. utf8 表達:

可以看到占用了10個位元組,即 dogstring

.utf8.count == 10

每個單位是 uint8 型別

2. utf16表達:dogstring.utf16.count == 6

每個單位是 unsigned int16型別

乙個表情符號需要2個uint16表示。

3. unicodescalar 標量表示

dogstring.unicodescalars.count == 5

每個單位是unicodescalar,占用uint32的記憶體,持有21bit的資料。

這種表達方式最接近我們所見到的內容。

Swift程式設計基礎之筆記總結 String

個人總結若有疏漏,還望指點補全。string swift中的string型別是輕量級且易讀 結構體,列舉等 全為值型別 nsstring 為引用型別 字串的處理上方便 一.判斷是否是空串 public var isempty bool 例 str.isempty ps swift裡面也存在可變與不可...

Swift 中如何擷取String

swift 中擷取字串的方式非常麻煩,但是在oc中的字串擷取卻比較便捷,要擷取string 只需要將string 轉化為nsstring 在進行擷取就可以了 示例 如下 let mystr www.520it.com var substr mystr as nsstring substringfro...

swift學習之String常見操作

let currentversion v1.0.6.1221 定義一段字串 let strarray currentversion.components separatedby 將字串分離,分離點是字串 print 分離的字元 strarray 執行結果 分離的字元 v1 0 6 1221 prin...