web-dev-qa-db-fra.com

Comment diviser une chaîne en sous-chaînes sur iOS?

J'ai reçu un NSString du serveur. Maintenant, je veux le scinder en une sous-chaîne dont j'ai besoin. Comment diviser la chaîne?

Par exemple:

substring1: lit du deuxième au cinquième caractère

sous-chaîne2: lit 10 caractères du 6ème caractère.

83
Chilly Zhong

Vous pouvez également scinder une chaîne en une chaîne, à l'aide de la méthode componentsSeparatedByString de NString.

Exemple de documentation:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
222
codelogic

NSString a quelques méthodes pour cela:

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

Consultez la documentation de NSString pour plus d'informations.

38
Joel Levin

J'ai écrit une petite méthode pour diviser des chaînes en un nombre spécifié de parties. Notez qu'il ne prend en charge que les caractères de séparation simples. Mais je pense que c'est un moyen efficace de scinder un NSString.

//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;
}
1
ben