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

voix
80

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

Par exemple:

substring1: lire le second caractère à caractère 5

substring2: lire 10 caractères du 6 caractère.

Créé 27/02/2009 à 10:17
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
211

Vous pouvez également découper une chaîne par une sous - chaîne, en utilisant de nSTRING componentsSeparatedByString méthode.

Exemple de documentation:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
Créé 27/02/2009 à 10:43
source utilisateur

voix
38

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.

Créé 27/02/2009 à 10:20
source utilisateur

voix
0

J'ai écrit une petite méthode pour diviser les chaînes dans une certaine quantité de pièces. Notez qu'il ne supporte que des caractères de séparation simples. Mais je pense qu'il est un moyen efficace de diviser 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;
}
Créé 13/12/2016 à 10:24
source utilisateur

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