2009-11-22 8 views
13

Vous avez appris comment récupérer et écrire dans les variables en Objective-C, maintenant il est temps d'apprendre à faire quelque chose de plus utile avec eux! En ce moment, j'essaie principalement de comprendre comment fonctionne la manipulation de chaînes. En particulier, je cherche les fonctions suivantes:Manipulation de chaînes dans Objective-C

  • Enchaînement
  • Trouver la longueur d'une chaîne (en particulier multi-octets/UTF-8 cordes, je fais beaucoup de travail avec les langues d'Asie orientale)
  • Tirer juste une partie d'une chaîne (par exemple, la « foobar » sur « abcfoobarxyz »)
  • Recherche dans une chaîne (voir l'exemple ci-dessus)
  • cas Changement (majuscules, minuscules, titre si elle est simple à faire)
  • Exploding/Imploding stri ngs (par ex. créer et obtenir des informations à partir des listes séparées par des virgules)
  • Rechercher/Remplacer dans les chaînes
  • Toute autre fonctions de chaîne généralement utiles qui pourraient être disponibles
+0

Lire la documentation? –

Répondre

42

Exemples: Concaténation:

- (NSString*) concatenateString:(NSString*)stringA withString:(NSString*)stringB 
{ 
    NSString *finalString = [NSString stringWithFormat:@"%@%@", stringA, 
                 stringB]; 
    return finalString; 
} 
// The advantage of this method is that it is simple to put text between the 
// two strings (e.g. Put a "-" replace %@%@ by %@ - %@ and that will put a 
// dash between stringA and stringB 

Longueur de chaîne:

- (int) stringLength:(NSString*)string 
{ 
    return [string length]; 
    //Not sure for east-asian languages, but works fine usually 
} 

supprimer le texte de la chaîne:

- (NSString*)remove:(NSString*)textToRemove fromString:(NSString*)input 
{ 
    return [input stringByReplacingOccurrencesOfString:textToRemove 
              withString:@""]; 
} 

Majuscules/Minuscules/casse de titre:

- (NSString*)uppercase:(NSString*)stringToUppercase 
{ 
    return [stringToUppercase uppercaseString]; 
} 

- (NSString*)lowercase:(NSString*)stringToLowercase 
{ 
    return [stringToLowercase lowercaseString]; 
} 

- (NSString*)titlecase:(NSString*)stringToTitleCase 
{ 
    return [stringToTitleCase capitalizedString]; 
} 

Rechercher/Remplacer

- (NSString*)findInString:(NSString*)string 
     replaceWithString:(NSString*)stringToReplaceWith 
{ 
    return [input stringByReplacingOccurrencesOfString:string 
              withString:stringToReplaceWith]; 
} 

J'espère que cela aide! PS: N'oubliez pas de consulter la documentation, et Google est votre ami.Bonne chance

+0

Merci beaucoup! J'ai travaillé à travers la documentation, mais c'est parfois plutôt déroutant pour moi, alors que disséquer des extraits de code pour voir comment cela fonctionne généralement n'est pas un problème. – Kaji

+0

pas de problème. Gardez juste à l'esprit que ce sont des fonctions (séparées). Donc vous pouvez - et devriez - utiliser les parenthèses directement dans le code (comme si vous avez un programme hello world: '- (IBAction) helloButtonClicked: (id) expéditeur {[textField setStringValue: [@" HELLO WORLD "lowercaseString]]; 'Amusez-vous –

+0

Great! Vous avez raison, Google est mon ami - il m'aide à trouver des choses sur StackOverflow! – mpemburn

2

Dans Xcode, appuyez sur CMD-SHIFT-D et la recherche de NSString.h, NSMutableString et/ou NSScanner

les ouvrir et regarder toutes les choses que vous pouvez faire avec NSStrings. Cela devrait vous dire quelles sont les fonctions. Au fait, cela devrait devenir une seconde nature pour vous car vous en utiliserez beaucoup pour découvrir les fonctions et/ou les délégués.

1

Voici une routine "cas titre" pour vous:

- (NSString *) stringToTitleCase: (NSString *) inString 
{ 
    NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)]; 
    NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)]; 

    return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest]; 
} 
+1

Oui, mais titlecase devrait faire la première lettre de chaque mot capital, donc vous devrez analyser la chaîne pour des mots séparés etc –

+2

Dans Dans ce cas, vous pouvez utiliser NSString capitalizedString – Ricardo

0
- (NSString *) stringToTitleCase: (NSString *) inString 
{ 
    NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)]; 
    NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)]; 

    return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest]; 
}