我试图从Nsstring中获取单个字符,如“ઐતિહાસિક”,“પ્રકાશન”,“ક્રોધ”.我希望输出如1)ઐ,તિ,હા,સિ,ક2)પ્ર,કા,શ,ન3)ક્રો,ધ,但输出就像这样1)ઐ,ત,િ,હ,ક2 )પ,્,ર,ક,ા,ન3)ક,ો,ધ
我使用过如下代码:
NSMutableArray *array = [[NSMutableArray alloc]init]; for (int i=0; i<strElement.length; i++) { Nsstring *str = [strElement substringWithRange:NSMakeRange(i,1)]; [array addobject:str]; } NSLog(@"%@",array);
让我们把strElement作为“ક્રોધ”然后我得到像这样的输出ક,ધ
但我需要像这样的输出ક્રો,ધ
有什么方法可以获得所需的输出吗?任何直接在iOS中可用的方法或需要由我自己创建它然后以任何方式或想法如何创建它?
任何帮助表示赞赏
解决方法
您的代码假设字符串中的每个字符都是单个unichar值.但事实并非如此.某些Unicode字符由多个unichar值组成.
解决方案是使用rangeOfComposedCharacterSequenceAtIndex:而不是substringWithRange:固定范围长度为1.
Nsstring *strElement = @"ઐતિહાસિક પ્રકાશન ક્રોધ"; NSMutableArray *array = [[NSMutableArray alloc]init]; NSInteger i = 0; while (i < strElement.length) { NSRange range = [strElement rangeOfComposedCharacterSequenceAtIndex:i]; Nsstring *str = [strElement substringWithRange:range]; [array addobject:str]; i = range.location + range.length; } // Log the results. Build the results into a mutable string to avoid // the ugly Unicode escapes shown by simply logging the array. NSMutableString *res = [NSMutableString string]; for (Nsstring *str in array) { if (res.length) { [res appendString:@","]; } [res appendString:str]; } NSLog(@"Results: %@",res);
这输出:
Results: ઐ,પ્ર,ન,ક્રો,ધ
原文地址:https://www.jb51.cc/iOS/327867.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。