2015-11-20 35 views
6

のようにNSStringから単一の文字を取得しようとしています。。私が欲しいの出力のような1)ઐ、તિ、હા、સિ、ક2)પ્ર、કા、શ、ન3)ક્રો、ધが、出力は次のように来ている。この1)ઐ、ત、િ、હ、િ 、ક2)પ、્、ર、ક、ા、શ、ન3)ક、્、ર、ો、ધGuyrati言語(他の言語)のiosの文字列から単一文字を取得する方法

私は以下のようなコードを使用しています

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値であると仮定している

答えて

6

認識されます。そうではありません。 Unicode文字の一部は、複数のunicharの値で構成されています。 、ઐ、તિ、હા、સિ、ક:

結果:

溶液を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); 

この出力の一定範囲の長さとrangeOfComposedCharacterSequenceAtIndex:代わりにsubstringWithRange:を使用することです魔法のように、この作品@rmaddyપ્ર、કા、શ、ન、ક્રો、ધ

+0

感謝 –