Vipin
Vipin

Reputation: 4728

how can I convert string to an array with separator?

I have a string in the following format

myString = "cat+dog+cow"

I need to store each string separated by + in to a array. Eg:

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

Can anyone tell me the proper way to do this?

Upvotes: 3

Views: 13077

Answers (12)

Jhaliya - Praveen Sharma
Jhaliya - Praveen Sharma

Reputation: 31730

Use the componentsSeparatedByString: method of NSString.

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

NSString* haiString = [myArray objectAtIndex:0];
NSString* welcomeString = [myArray objectAtIndex:1];

Upvotes: 1

Nick
Nick

Reputation: 875

Try This:

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

Upvotes: 0

Anish
Anish

Reputation: 2927

componentsSeparatedByString: splits the string and return the result in an array.

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

[myArray objectAtIndex:0];//cat
[myArray objectAtIndex:1];//dog
[myArray objectAtIndex:2];//cow

Upvotes: 15

Jayprakash Dubey
Jayprakash Dubey

Reputation: 36447

Simple code :

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]);

Upvotes: 0

Anjani
Anjani

Reputation: 31

You can find this one very simple

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

OUTPUT:

Array items ( Cat, dog, Cow )

Upvotes: 1

memmons
memmons

Reputation: 40502

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

Upvotes: 1

Narayanan Ramamoorthy
Narayanan Ramamoorthy

Reputation: 826

NSArray *lines = [string componentsSeparatedByString:@"-"];

The first value will be stored in 0th index of lines and second value will be stored in 1th index of lines..

Why not array?

Upvotes: 0

Deepak Danduprolu
Deepak Danduprolu

Reputation: 44633

If you are averse to using arrays, you can consider this –

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];

Upvotes: 0

rptwsthi
rptwsthi

Reputation: 10182

This will be the solution if you are dealing with a string:

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

And each word will be stored in respective position from 0-n.

Try This. :)

Upvotes: 0

Midhere
Midhere

Reputation: 664

It is vert simple..

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

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

Hope this helps...

I you don't want use array then iterate through each character...

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;
}

Thats all...

Upvotes: 1

Chetan Bhalara
Chetan Bhalara

Reputation: 10344

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

firstString = [strArray objectAtIndex:0];//Hai
secondString = [strArray objectAtIndex:1];//Welcome

Upvotes: 0

Anish
Anish

Reputation: 2927

Try this..

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

[arr objectAtIndex:0];//Hai
[arr objectAtIndex:1];//Welcome

Upvotes: 3

Related Questions