Как вы разделяете NSString на составные части? - PullRequest
8 голосов
/ 15 октября 2010

В Xcode, если у меня есть NSString, содержащий число, то есть @ "12345", как мне разбить его на массив, представляющий составные части, то есть "1", "2", "3", "4"," 5 "... На объекте NSString есть componentsSeparatedByString, но в этом случае разделитель отсутствует ...

Ответы [ 5 ]

24 голосов
/ 03 мая 2011

Для этого есть готовая функция-член NSString:

NSString* foo = @"safgafsfhsdhdfs/gfdgdsgsdg/gdfsgsdgsd";
NSArray* stringComponents = [foo componentsSeparatedByString:@"/"];
4 голосов
/ 15 октября 2010

Может показаться, что characterAtIndex: подойдет, но возвращает unichar, который не является типом данных, полученным из NSObject, и поэтому не может быть непосредственно помещен в массив. Вам нужно будет создать новую строку с каждым unichar.

Более простое решение - использовать substringWithRange: с 1-символьными диапазонами. Проведите строку через простой цикл for (int i=0;i<[myString length];i++), чтобы добавить каждый диапазон из 1 символа в NSMutableArray.

1 голос
/ 15 октября 2010

В вашем случае, так как у вас нет разделителя, вы должны получить отдельные символы на

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

или этот

- (unichar)characterAtIndex:(NSUInteger) index inside a loop.

Это единственный способ, которым я сейчас вижу.

1 голос
/ 15 октября 2010

A NSString уже - это массив его компонентов, если под компонентами вы подразумеваете отдельные символы. Используйте [string length] для получения длины строки и [string characterAtIndex:] для получения символов.

Если вам действительно нужен массив строковых объектов только с одним символом, вам придется создать этот массив самостоятельно. Зацикливайте символы в строке с помощью цикла for, создайте новую строку с одним символом, используя [NSString stringWithFormat:], и добавьте ее в свой массив. Но в этом обычно нет необходимости.

0 голосов
/ 15 октября 2010

Не знаю, работает ли это для того, что вы хотите сделать, но:

const char *foo = [myString UTF8String]
char third_character = foo[2];

Обязательно прочитайте документы на UTF8String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...