2009-11-22 17 views
13

Ottenuto una sospensione su come recuperare e scrivere sulle variabili in Objective-C, ora è il momento di imparare come fare qualcosa di più utile con loro! In questo momento, sto principalmente cercando di capire come funziona la manipolazione delle stringhe. In particolare, sto cercando le seguenti funzioni:Manipolazione stringa in Objective-C

  • concatenazione
  • Trovare la lunghezza di una stringa (stringhe in particolare multi-byte/UTF-8; faccio un sacco di lavoro con le lingue dell'Asia orientale)
  • Tirando solo una parte di una stringa (ad esempio il "foobar" su "abcfoobarxyz")
  • Ricerca all'interno di una stringa (vedi esempio sopra)
  • Modifica caso (superiore, inferiore, titolo se è semplice do)
  • Esplosione/attacco di implosione ngs (ad es. la creazione e ottenere informazioni da elenchi separati da virgole)
  • Trova/Sostituisci all'interno delle stringhe
  • qualsiasi altra funzione di stringa generalmente utili che potrebbero essere disponibili
+0

leggere la documentazione? –

risposta

42

Esempi: concatenazione:

- (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 

String Lunghezza:

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

rimuovere il testo dal stringa:

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

maiuscole/minuscole/Titlecase:

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

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

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

Trova/Sostituisci

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

Spero che questo aiuta!

PS: non dimenticare di controllare la documentazione e Google è tuo amico.Buona fortuna

+0

Grazie mille! Ho lavorato a modo mio attraverso la documentazione, ma a volte è piuttosto confuso per me, mentre la dissezione di passaggi di codice per vedere come funziona in generale non è un problema. – Kaji

+0

nessun problema. Basta tenere a mente che queste sono funzioni (separate). Quindi puoi - e dovresti - usare le parentesi nel codice (come se tu abbia un programma Hello World: '- (IBAction) helloButtonClicked: (id) sender {[textField setStringValue: [@" HELLO WORLD "minuscoloString]];} 'Divertiti con –

+0

Fantastico! Hai ragione, Google è mio amico - mi aiuta a trovare le cose su StackOverflow! – mpemburn

2

In Xcode, premere CMD-SHIFT-D e la ricerca di NSString.h, NSMutableString e/o NSScanner

aprire tali file e guardare tutte le cose che si possono fare con NSStrings. Questo dovrebbe dirvi quali funzioni ci sono.

A proposito, questo dovrebbe diventare una seconda natura per voi, poiché userete questo molto per scoprire quali sono le funzioni e/oi delegati.

1

Ecco una routine "titolo caso" per voi:

- (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

Sì, ma Titlecase dovrebbe fare la prima lettera di ogni parola maiuscola, quindi dovresti analizzare la stringa per le parole separate ecc. –

+2

In In quel caso puoi usare 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]; 
}