如何从ios中的字符串中获取Gujrati语言的单个字符(其他语言)

我试图从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: ઐ,પ્ર,ન,ક્રો,ધ

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...