views:

58

answers:

3
+1  Q: 

NSString Question

Hi,

I'm trying to extract the names from this list:

new String:  blood cz            TheDeAtH              TBH DragonFire   Scotsman          King Kot            BobLeeSwagger          AffeMitWaffe    Jackobo          D L  fatality         Jack bobo           telex             apa           Tiger            zip     Guronzan          noobmaster           fear           piotrekjankiewi         RoCJackal 

These names will then have to be written into an array. I've done this so far:

NSString *newString = [[test componentsSeparatedByCharactersInSet:
       [[NSCharacterSet letterCharacterSet] invertedSet]] 
         componentsJoinedByString:@";"]; //yes there are spaces in the above list, previously they were replaced by ;

I then load it into an array:

 NSArray *chunks = [newString componentsSeparatedByString:@";"];

This works, but for the name "blood cz" for example, it takes blood and cz as a seperate thing in the array, but i need them to be together.

Does anyone have an idea of how I could achieve this? I've been breaking my head over this, because Im not able to seperate the strings. When taking the whitespaces out, its all together and I can seperate the strings, reason being that these strings are being taken from a gameserver website, where playernames change...

+1  A: 

You can't just replace the whitespaces with ; only if there are two whitespaces?

Jonas Jongejan
A: 

I am not sure but this one looks for me like a tab \t rather than a space. Another solution is like Jonas's one. You can try to separate 2 strings only when there are more than 2 spaces between them

vodkhang
+3  A: 

This worked

NSString         *mystring = @"blood cz            TheDeAtH              TBH DragonFire   Scotsman          King Kot            BobLeeSwagger          AffeMitWaffe    Jackobo          D L  fatality         Jack bobo           telex             apa           Tiger            zip     Guronzan          noobmaster           fear           piotrekjankiewi         RoCJackal";
NSString *mystring2 = [mystring stringByReplacingOccurrencesOfString:@"  "  withString:@";"];
    NSCharacterSet   *separator   = [NSCharacterSet     characterSetWithCharactersInString:@";"];
NSArray          *chunks      = [mystring2 componentsSeparatedByCharactersInSet:separator];

    for(NSString * myStr in chunks) {
        NSLog(myStr);
    }

You still have to left trim the names (cutting of leading spaces) but I left some work for you.

Also I want to add that this is best called a "hack". Because it will NOT WORK anymore if a user enters a double space in a name.

So I would take a step back and ask myself why I get such a lousy string to interpret and try to solve the problem at the source of the problem ... This is my core answer: Check out whether you could get a better string.

Jürgen Hollfelder
thanks for your solution and suggestion!
David Schiefer
Gern geschehen (you are welcome)
Jürgen Hollfelder