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


83

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

Par exemple:

substring1: lecture du deuxième caractère au 5e caractère

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


1
Vous devez changer l'iPhone en iOS.
Ricardo

Réponses:


223

Vous pouvez également fractionner une chaîne par une sous-chaîne, à l'aide de la méthode componentsSeparatedByString de NString .

Exemple tiré de la documentation:

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

Puis-je fractionner des chaînes dont les marques séparées sont différentes? par exemple @ "A, B ^ C ~ D"
Chilly Zhong

8
Vous devriez pouvoir utiliser "componentsSeparatedByCharactersInSet:" de NSString pour fractionner sur plusieurs caractères.
codelogic

bonjour j'ai réussi à séparer la chaîne mais je veux définir celle séparée dans UILabel une idée?
Nikunj Jadav

Parcourez votre tableau: for (int i = 0; i <[listItems count]; i ++) et utilisez [listItems objectAtIndex: i];
Domness

Merci! je fais un peu différent: `NSArray * listItems = [Liste componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];`
innuendoreplay

39

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.


1

J'ai écrit une petite méthode pour diviser les chaînes en un nombre spécifié de parties. Notez qu'il ne prend en charge que les caractères séparateurs uniques. Mais je pense que c'est un moyen 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;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.