Как я могу преобразовать строку в массив с разделителем? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть строка в следующем формате

myString = "cat+dog+cow"

Мне нужно хранить каждую строку, разделенную +, в массиве.Например:

myArray[0] = cat
myArray[1] = dog
myArray[2] = cow

Может кто-нибудь сказать мне правильный способ сделать это?

Ответы [ 12 ]

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

componentsSeparatedByString: разбивает строку и возвращает результат в массиве.

NSArray *myArray = [myString componentsSeparatedByString:@"+"];

[myArray objectAtIndex:0];//cat
[myArray objectAtIndex:1];//dog
[myArray objectAtIndex:2];//cow
4 голосов
/ 16 мая 2011

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

NSArray *arr = [myString componentsSeparatedByString:@"-"];

[arr objectAtIndex:0];//Hai
[arr objectAtIndex:1];//Welcome
1 голос
/ 25 мая 2011

Вы можете найти это очень просто

NSString *str = @"cat+dog+cow";
NSArray *arr = [str componentsSeparatedByString:@"+"];
NSLog(@"Array items %@",arr);

ВЫВОД:

Массив ( Кошка, собака, корова )

1 голос
/ 24 мая 2011
NSArray *myWords = [myString componentsSeparatedByString:@"+"];
1 голос
/ 16 мая 2011

Это очень просто ..

NSString * test = @"Hello-hi-splitting-for-test";
NSArray * stringArray = [test componentsSeparatedByString:@"-"];

// Now stringArray will contain all splitted strings.. :)

Надеюсь, это поможет ...

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

NSMutableString * splittedString = nil;

for(int i=0;i<test.length;i++){

    unichar character = [test characterAtIndex:0];
    if (character=='-') {

        if (splittedString!=nil) {
            NSLog(@"String component %@",splittedString);
            [splittedString release];
            splittedString = nil;
        }

    } else {
        if (splittedString==nil) {
            splittedString = [[NSMutableString alloc] init];                
        }
        [splittedString appendFormat:@"%C",character];
    }

}

if (splittedString!=nil) {
    NSLog(@"String last component %@",splittedString);
    [splittedString release];
    splittedString = nil;
}

Вот и все ...

1 голос
/ 16 мая 2011

Используйте функцию componentsSeparatedByString: NSArray .

 NSString string = @"hai-welcome";
 NSArray myArray = [string componentsSeparatedByString:@"-"];

NSString* haiString = [myArray objectAtIndex:0];
NSString* welcomeString = [myArray objectAtIndex:1];
0 голосов
/ 16 февраля 2018

Попробуйте:

NSString *str = @"cat+dog+cow" ;
NSArray *array = [str componentsSeparatedByString:@"+"];
NSLog(@"%@",array) ;
0 голосов
/ 21 января 2014

Простой код:

NSString *myString = [[NSString alloc] initWithString:@"cat+dog+cow"];
NSArray *resultArray = [tempString componentsSeparatedByString:@"+"];

NSLog(@"1. %@ 2. %@ 3. %@",[resultArray objectAtIndex:0],[resultArray objectAtIndex:1],[resultArray objectAtIndex:2]);
0 голосов
/ 16 мая 2011

Если вы не хотите использовать массивы, вы можете рассмотреть это -

NSString *accessMode, *message;

NSScanner *scanner = [NSScanner scannerWithString:@"hai-welcome"];
NSCharacterSet *hyphenSet = [NSCharacterSet characterSetWithCharactersInString:@"-"];

[scanner scanUpToCharactersFromSet:hyphenSet intoString:&accessMode];
[scanner scanCharactersFromSet:hyphenSet intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@""] intoString:&message];
0 голосов
/ 16 мая 2011

Это будет решением, если вы имеете дело со строкой:

NSString *mySstring = @"hai-welcome";
NSMutableArray *anArray=[[NSMutableArray alloc] initWithArray:[componentsSeparatedByString: @"-"]];

И каждое слово будет храниться в соответствующей позиции от 0-n.

Попробуй это. :)

...