gpt4 book ai didi

iphone - 以相反的顺序打印unicode NSString

转载 作者:行者123 更新时间:2023-12-01 17:27:27 25 4
gpt4 key购买 nike

我已使用此代码以相反的顺序打印英文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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com