我已使用此代码以相反的顺序打印英文NSString
:
NSString *str = term;
NSMutableArray *temp=[[NSMutableArray alloc] init];
for(int i=0;i<[str length];i++)
{
[temp addObject:[NSString stringWithFormat:@"%c",[str characterAtIndex:i]]];
}
temp = [NSMutableArray arrayWithArray:[[temp reverseObjectEnumerator] allObjects]];
NSString *reverseString=@"";
for(int i=0;i<[temp count];i++)
{
reverseString=[NSString stringWithFormat:@"%@%@",reverseString,[temp objectAtIndex:i]];
}
NSLog(@"%@",reverseString);
但是此代码仅适用于英语单词,因此当我尝试使用这样的阿拉伯语单词:تجريب控制台将显示随机的英语字符。
如何使用此代码来打印上述单词(以及任何其他类似的阿拉伯(unicode)字符串)的反向版本?
最佳答案
在第一次调用%C
时,您需要使用%c
(大写C)而不是stringWithFormat
(小写c)格式说明符。小写的“c”格式说明符用于8位字符;大写的“C”代表unicode。
编辑:如果要更有效地执行此操作,请将数据复制到unichar
元素数组中,反转数组,然后将结果输入另一个NSString
中。这使您可以按Length/2
步骤反转字符串:
NSString * s = @"تجريب";
unichar *cc = (unichar*)malloc(s.length+1);
[s getCharacters:cc];
for (NSUInteger i=0 ; i < s.length/2 ; i++) {
// swap elements at i and s.length-i-1
unichar tmp = cc[i];
cc[i] = cc[s.length-i-1];
cc[s.length-i-1] = tmp;
}
s = [NSString stringWithCharacters:cc length:s.length];
free(cc);
NSLog(@"%@", s);
关于iphone - 以相反的顺序打印unicode NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960989/