Как получить один символ NSString из NSString

Я хочу получить символ где-то внутри NSString. Я хочу, чтобы результат был NSString.

Это код, который я использую для получения одного символа в его индексе:

[[s substringToIndex:i] substringToIndex:1]

Есть ли лучший способ сделать это?

Ответ 1

Это также приведет к получению символа в индексе я как NSString, и вы используете только структуру NSRange, а не дополнительную NSString.

NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];

Ответ 2

Если вы просто хотите получить один символ из NSString, вы можете попробовать это.

- (unichar)characterAtIndex:(NSUInteger)index;

Используется так:

NSString *originalString = @"hello";
int index = 2;
NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]];
//returns "e".

Ответ 3

Ваше предложение работает только для простых символов, таких как ASCII. NSStrings хранит unicode, и если ваш персонаж длится несколько unichars, тогда вы можете обрести тарабарщину. Используйте

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

если вы хотите определить, сколько unichars ваш персонаж. Я использую это, чтобы выполнить мои строки, чтобы определить, где встречаются границы символов.

Быть полностью юникодом способным - это немного работать, но зависит от того, какие языки вы используете. Я вижу много азиатского текста, поэтому большинство персонажей перетекают из одного места, и поэтому он работает, что мне нужно делать.

Ответ 4

NSMutableString *myString=[NSMutableString stringWithFormat:@"Malayalam"];
NSMutableString *[email protected]"";

for (int i=0; i<myString.length; i++) {
    revString=[NSMutableString stringWithFormat:@"%c%@",[myString characterAtIndex:i],revString];
}
NSLog(@"%@",revString);