2015-09-03 26 views
1

我試圖得到一個包含了一堆表情符號,包括標誌字符一個NSString的長度。現在我知道如何得到一個包含字符串表情符號的長度:NSString的長度與標誌表情符號

__block NSInteger length = 0; 
[string enumerateSubstringsInRange:range 
          options:NSStringEnumerationByComposedCharacterSequences 
         usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { 
    length++; 
}]; 

然而,「NSStringEnumerationByComposedCharacterSequences」並不在這種情況下工作。普通表情符號由兩個字符組成。國旗emojis由兩個表情符號組成。因此,一個標誌表情符號,而沒有任何枚舉技術的長度爲4

如何獲得包含標誌表情符號一個NSString的適當長度(字符數)?

+0

'NSInteger長度= [字符串長度]是什麼問題;'?您可以使用'substringWithRange'來獲得您感興趣的範圍。 –

+0

@Alex請注意,如果您說標誌字符的長度爲4,即4個UTF-16代碼單元或8個字節。 – zaph

+1

@i_am_jorf @「」。length返回4,這是你期望的一個角色? @「-s-」中的標誌字符的範圍是什麼?你會期望範圍是NSMakeRange(5,4)? – zaph

回答

1

我嘗試了以下解決方案。 對於正常的表情符號,它返回2,對於標誌,它會給出4. 這也適用於普通的字符和特殊字符。

const char *cString = [string UTF8String]; 

int textLength = (int)strlen(cString);