NSString内のどこかからキャラクターを取得したいです。結果をNSStringにしたいです。
これは、インデックスitで単一の文字を取得するために使用するコードです。
[[s substringToIndex:i] substringToIndex:1]
それを行うためのより良い方法はありますか?
これにより、インデックスiの文字がNSStringとして取得され、追加のNSStringではなくNSRange構造体のみを使用しています。
NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];
NSStringから1つの文字を取得したいだけなら、これを試すことができます。
- (unichar)characterAtIndex:(NSUInteger)index;
次のように使用します:
NSString *originalString = @"hello";
int index = 2;
NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]];
//returns "e".
あなたの提案は、ASCIIのような単純な文字に対してのみ有効です。 NSStringsはUnicodeを保存します。キャラクターが数文字の長さの場合、意味がわからなくなる可能性があります。つかいます
- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
あなたのキャラクターがいくつのユニチャーを持っているかを決定したい場合。これを使用して、文字列をステップ実行して、文字の境界がどこで発生するかを判断します。
完全にユニコード対応にするのは少し手間がかかりますが、使用する言語によって異なります。アジアのテキストがたくさんあるので、ほとんどの文字が1つのスペースから溢れているので、やらなければならない仕事です。
NSMutableString *myString=[NSMutableString stringWithFormat:@"Malayalam"];
NSMutableString *revString=@"";
for (int i=0; i<myString.length; i++) {
revString=[NSMutableString stringWithFormat:@"%c%@",[myString characterAtIndex:i],revString];
}
NSLog(@"%@",revString);