Как получить один символ NSString из NSString - PullRequest
68 голосов
/ 01 октября 2010

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

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

[[s substringToIndex:i] substringToIndex:1]

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

Ответы [ 4 ]

130 голосов
/ 01 октября 2010

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

NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];
38 голосов
/ 09 сентября 2013

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

- (unichar)characterAtIndex:(NSUInteger)index;

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

NSString *originalString = @"hello";
int index = 2;
NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]];
//returns "e".
23 голосов
/ 01 октября 2010

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

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

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

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

0 голосов
/ 19 июля 2016
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...