Comment obtenir la sous-chaîne de NSSsortingng?

Si je veux obtenir une valeur de la valeur NSSsortingng @"value:hello World:value" , que dois-je utiliser?

La valeur de retour que je veux est @"hello World" .

Option 1:

 NSSsortingng *haystack = @"value:hello World:value"; NSSsortingng *haystackPrefix = @"value:"; NSSsortingng *haystackSuffix = @":value"; NSRange needleRange = NSMakeRange(haystackPrefix.length, haystack.length - haystackPrefix.length - haystackSuffix.length); NSSsortingng *needle = [haystack subssortingngWithRange:needleRange]; NSLog(@"needle: %@", needle); // -> "hello World" 

Option 2:

 NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^value:(.+?):value$" options:0 error:nil]; NSTextCheckingResult *match = [regex firstMatchInSsortingng:haystack options:NSAnchoredSearch range:NSMakeRange(0, haystack.length)]; NSRange needleRange = [match rangeAtIndex: 1]; NSSsortingng *needle = [haystack subssortingngWithRange:needleRange]; 

Celui-ci pourrait être un peu exagéré pour votre cas plutôt sortingvial.

Option 3:

 NSSsortingng *needle = [haystack componentsSeparatedBySsortingng:@":"][1]; 

Celui-ci crée trois chaînes temporaires et un tableau lors de la division.


Tous les extraits de code supposent que ce qui est recherché est réellement contenu dans la chaîne.

Voici une réponse un peu moins compliquée:

 NSSsortingng *mySsortingng = @"abcdefg"; NSSsortingng *mySmallerSsortingng = [mySsortingng subssortingngToIndex:4]; 

Voir aussi subssortingngWithRange et subssortingngFromIndex

Voici une fonction simple qui vous permet de faire ce que vous recherchez:

 - (NSSsortingng *)getSubssortingng:(NSSsortingng *)value betweenSsortingng:(NSSsortingng *)separator { NSRange firstInstance = [value rangeOfSsortingng:separator]; NSRange secondInstance = [[value subssortingngFromIndex:firstInstance.location + firstInstance.length] rangeOfSsortingng:separator]; NSRange finalRange = NSMakeRange(firstInstance.location + separator.length, secondInstance.location); return [value subssortingngWithRange:finalRange]; } 

Usage:

 NSSsortingng *myName = [self getSubssortingng:@"This is my :name:, woo!!" betweenSsortingng:@":"]; 

Voici une petite combinaison des réponses @Regexident Option 1 et @Garett pour obtenir un puissant coupe-chaîne entre un préfixe et un suffixe, avec des mots MORE … ANDMORE.

 NSSsortingng *haystack = @"MOREvalue:hello World:valueANDMORE"; NSSsortingng *prefix = @"value:"; NSSsortingng *suffix = @":value"; NSRange prefixRange = [haystack rangeOfSsortingng:prefix]; NSRange suffixRange = [[haystack subssortingngFromIndex:prefixRange.location+prefixRange.length] rangeOfSsortingng:suffix]; NSRange needleRange = NSMakeRange(prefixRange.location+prefix.length, suffixRange.location); NSSsortingng *needle = [haystack subssortingngWithRange:needleRange]; NSLog(@"needle: %@", needle); 

Utilisez cela aussi

 NSSsortingng *ChkStr = [MySsortingng subssortingngWithRange:NSMakeRange(5, 26)]; 

Remarque – Votre NSMakeRange(start, end) doit être NSMakeRange(start, end- start) ;