2011-03-24 53 views
0

假設我得到如下字符串:如何獲得NSString的「真實長度」

NSString * str = @「abc一二三」;

包含英語和中國,如果我使用[STR長度]我得到 結果6.我想是1 + 1 + 1 + 2 + 2 + 2 = 9,一箇中國字符 等於結果2英文字母。

希望有人能幫助我,謝謝^ _^

+0

您使用的中文字符是單個UTF-8字符 - 您爲什麼想要假裝否則。 – 2011-03-24 13:09:09

+0

也許海報需要字節,而不是字符 - 例如分配存儲空間。但是,這將是12個字節,因爲UTF-8中的漢語字符每個需要3個字節,而不是2個。 – 9000 2011-03-24 13:18:37

+0

爲什麼您認爲一個漢字等於兩個英文字母?你認爲該字符串中的前四個字符是什麼? – gnasher729 2015-01-20 00:05:13

回答

0

那麼,這將是乏味的,但你可以創建自己的字符串長度的方法。具有switch語句的方法,該語句分別檢查字符並相應地分配整數值,然後返回總和。例如:

- (NSInteger)specialStringLength:(NSString *)theString { 
    int realLength=0; 
    for(int x=0;x<[theString length];x++) 
    { 
      char thisOne = [theString characterAtIndex:x]; 
      switch(thisOne) { 
       case 'a': 
        realLength++; 
        break; 
       // and so on... 
       case '三': 
        realLength+=2; 
        break; 
       // and so on... 
      } 
    } 
    return realLength; 
} 
0

也許你可以將NSString轉換爲NSData,並使用NSData的長度。