web-dev-qa-db-fra.com

Scinder une chaîne NSString pour accéder à une pièce en particulier

J'ai une chaîne comme celle-ci: @"10/04/2011" et je veux sauvegarder uniquement le "10" dans une autre chaîne. Comment puis je faire ça?

142
CrazyDev
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];

Mise à jour 7/3/2018:

Maintenant que la question a acquis une balise Swift, je devrais ajouter la méthode Swift. C'est à peu près aussi simple:

let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]

Bien noter que cela vous donne un tableau de Substring. Si vous devez reconvertir ces chaînes en chaînes ordinaires, utilisez map

let strings = "10/04/2011".split(separator: "/").map{ String($0) }
let firstBit = strings[0]

ou

let firstBit = String(substrings[0])
375
JeremyP

L'une ou l'autre de ces 2:

NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];

Cependant, gardez à l'esprit que parfois une chaîne de date n'est pas correctement formatée et qu'un jour (ou un mois d'ailleurs) est affiché sous la forme 8 plutôt que 08, la première pouvant être la pire des deux solutions.

Ce dernier doit être placé dans un tableau séparé afin que vous puissiez réellement vérifier la longueur de la chose retournée. Ainsi, aucune exception ne sera renvoyée dans le cas d'une chaîne de date corrompue ou non valide, quelle que soit votre source.

36
Antwan van Houdt

Ça marche bien

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
9
VinukondaPraveen

Objectif c:

     NSString *day = [@"10/04/2011" componentsSeparatedByString:@"/"][0];

Rapide:

     var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
8
l-l

Utilisez [myString componentsSeparatedByString:@"/"]

6
Julio Gorgé

J'ai formaté le solution intéressante fournie par JeremyP ci-dessus dans une fonction réutilisable plus générique ci-dessous:

///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
    return [stringToBeExploded componentsSeparatedByString: delimiter];
}
5
Khayrattee

version Swift 3.

let arr = yourString.components(separatedBy: "/")
let month = arr[0]
1
Fangming