2011-03-24 52 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的长度。