Разделить NSString на массив в Objective-C - PullRequest
14 голосов
/ 05 февраля 2012

Как разделить строку @"Hello" на:

  • массив C * 'H', 'e', 'l', 'l', 'o'

или:

  • массив Objective C @[@"H", @"e", @"l", @"l", @"o"]

Ответы [ 4 ]

33 голосов
/ 05 февраля 2012

Если вы удовлетворены массивом C char s, попробуйте:

const char *array = [@"Hello" UTF8String];

Если вам нужен NSArray, попробуйте:

NSMutableArray *array = [NSMutableArray array];
NSString *str = @"Hello";
for (int i = 0; i < [str length]; i++) {
    NSString *ch = [str substringWithRange:NSMakeRange(i, 1)];
    [array addObject:ch];
}

И array будут содержать каждый символ как элемент этого.

7 голосов
/ 11 апреля 2013

Попробуйте это:

- (void) testCode
{
    NSString *tempDigit = @"12345abcd" ;
    NSMutableArray *tempArray = [NSMutableArray array];
    [tempDigit enumerateSubstringsInRange:[tempDigit rangeOfString:tempDigit]
                                  options:NSStringEnumerationByComposedCharacterSequences
                               usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
            [tempArray addObject:substring] ;
        }] ;

    NSLog(@"tempArray = %@" , tempArray);
}
4 голосов
/ 05 февраля 2012

Вы можете использовать - (unichar)characterAtIndex:(NSUInteger)index для доступа к символам строки в каждом индексе.

Итак,

NSString* stringie = @"astring";
NSUInteger length = [stringie length];
unichar stringieChars[length];
for( unsigned int pos = 0 ; pos < length ; ++pos )
{
    stringieChars[pos] = [stringie characterAtIndex:pos];
}
// replace the 4th element of stringieChars with an 'a' character
stringieChars[3] = 'a';
// print the modified array you produced from the NSString*
NSLog(@"%@",[NSString stringWithCharacters:stringieChars length:length]);
0 голосов
/ 05 августа 2014

A user529758 упоминает, разделите вашу строку - путь C - как:

const char *array = [@"Hello" UTF8String];

Но затем зациклите его, используя:

for (int i = 0; i < sizeof(array); i++) {
  doSomethingWithCharacter(array[i]);
}
...