假设我得到如下字符串:如何获得NSString的“真实长度”
NSString * str = @“abc一二三”;
包含英语和中国,如果我使用[STR长度]我得到 结果6.我想是1 + 1 + 1 + 2 + 2 + 2 = 9,一个中国字符 等于结果2英文字母。
希望有人能帮助我,谢谢^ _^
假设我得到如下字符串:如何获得NSString的“真实长度”
NSString * str = @“abc一二三”;
包含英语和中国,如果我使用[STR长度]我得到 结果6.我想是1 + 1 + 1 + 2 + 2 + 2 = 9,一个中国字符 等于结果2英文字母。
希望有人能帮助我,谢谢^ _^
那么,这将是乏味的,但你可以创建自己的字符串长度的方法。具有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;
}
也许你可以将NSString转换为NSData,并使用NSData的长度。
您使用的中文字符是单个UTF-8字符 - 您为什么想要假装否则。 – 2011-03-24 13:09:09
也许海报需要字节,而不是字符 - 例如分配存储空间。但是,这将是12个字节,因为UTF-8中的汉语字符每个需要3个字节,而不是2个。 – 9000 2011-03-24 13:18:37
为什么您认为一个汉字等于两个英文字母?你认为该字符串中的前四个字符是什么? – gnasher729 2015-01-20 00:05:13