字串長度
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 的回答中得到了證明。