字串長度

NSString 有一個 length 屬性來獲取字元數。

NSString *string = @"example";
NSUInteger length = string.length;       // length equals 7

分裂示例一樣 ,請記住 NSString 使用 UTF-16來表示字元。長度實際上只是 UTF-16 程式碼單元的數量。這可以與使用者認為的字元不同。

以下是一些可能令人驚訝的案例:

@"é".length == 1   // LATIN SMALL LETTER E WITH ACUTE (U+00E9)
@"é".length == 2   // LATIN SMALL LETTER E (U+0065) + COMBINING ACUTE ACCENT (U+0301)
@"❤️".length == 2  // HEAVY BLACK HEART (U+2764) + VARIATION SELECTOR-16 (U+FE0F)
@"🇮🇹".length == 4  // REGIONAL INDICATOR SYMBOL LETTER I (U+1F1EE) + REGIONAL INDICATOR SYMBOL LETTER T (U+1F1F9)

為了獲得使用者感知字元的數量,技術上稱為“ 字形叢集 ”,你必須使用 -enumerateSubstringsInRange:options:usingBlock:迭代字串並保持計數。這一點在 Nikolai Ruhe 對 Stack Overflow 的回答中得到了證明。