83 votes

Comment diviser une chaîne de caractères en sous-chaînes sur iOS ?

J'ai reçu un NSString du serveur. Je veux maintenant le diviser en sous-chaînes dont j'ai besoin. Comment diviser la chaîne ?

Par exemple :

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

substring2:lire 10 caractères à partir du 6ème caractère.

1 votes

Vous devriez passer de l'iPhone à iOS.

224voto

codelogic Points 22722

Vous pouvez également diviser une chaîne par une sous-chaîne, en utilisant la fonction composantsSeparatedByString méthode.

Exemple de documentation :

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

0 votes

Puis-je diviser des chaînes de caractères dont les marques de séparation sont différentes ? par exemple @"A,B^C~D"

8 votes

Vous devriez pouvoir utiliser la fonction "componentsSeparatedByCharactersInSet :" de NSString pour effectuer un découpage sur plusieurs caractères.

0 votes

Bonjour, j'ai réussi à séparer une chaîne de caractères, mais je veux mettre cette chaîne séparée dans UILabel.

39voto

Joel Levin Points 1984

NSString dispose de quelques méthodes pour cela :

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

Pour plus d'informations, consultez la documentation de NSString.

1voto

ben Points 656

J'ai écrit une petite méthode pour diviser les cordes en un nombre spécifié de parties. Notez qu'elle ne prend en charge que les caractères de séparation simples. Mais je pense que c'est une façon efficace de diviser une 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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X