Hoe string splitsen in substrings op iOS?

stemmen
80

Ik kreeg een NSString van de server. Nu wil ik het splitsen in de substring ik nodig heb. Hoe kan ik de string te splitsen?

Bijvoorbeeld:

substring1: lezen uit het tweede teken naar de 5e karakter

substring2: lees 10 personages uit de 6e karakter.

De vraag is gesteld op 27/02/2009 om 10:17
bron van user
In andere talen...                            


3 antwoorden

stemmen
211

U kunt ook een string gesplitst door een substring, met behulp van nSTRING's componentsSeparatedByString methode.

Voorbeeld van documentatie:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
antwoordde op 27/02/2009 om 10:43
bron van user

stemmen
38

NSString heeft een aantal methoden gebruiken:

[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];

Controleer de documentatie NSString voor meer informatie.

antwoordde op 27/02/2009 om 10:20
bron van user

stemmen
0

Ik schreef een beetje methode om strings splitsen in een bepaalde hoeveelheid onderdelen. Merk op dat het ondersteunt alleen single separator karakters. Maar ik denk dat het is een efficiënte manier om een ​​NSString splitsen.

//split string into given number of parts
-(NSArray*)splitString:(NSString*)string withDelimiter:(NSString*)delimiter inParts:(int)parts{
    NSMutableArray* array = [NSMutableArray array];

    NSUInteger len = [string length];
    unichar buffer[len+1];

    //put separator in buffer
    unichar separator[1];
    [delimiter getCharacters:separator range:NSMakeRange(0, 1)];

    [string getCharacters:buffer range:NSMakeRange(0, len)];

    int startPosition = 0;
    int length = 0;
    for(int i = 0; i < len; i++) {

        //if array is parts-1 and the character was found add it to array
        if (buffer[i]==separator[0] && array.count < parts-1) {
            if (length>0) {
                [array addObject:[string substringWithRange:NSMakeRange(startPosition, length)]];

            }

            startPosition += length+1;
            length = 0;

            if (array.count >= parts-1) {
                break;
            }

        }else{
            length++;
        }

    }

    //add the last part of the string to the array
    [array addObject:[string substringFromIndex:startPosition]];

    return array;
}
antwoordde op 13/12/2016 om 10:24
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more