2009-11-22 16 views
13

Consigamos un control sobre cómo recuperar y escribir variables en Objective-C, ¡ahora es el momento de aprender a hacer algo más útil con ellas! En este momento, principalmente estoy tratando de descubrir cómo funciona la manipulación de cadenas. En particular, estoy buscando para las siguientes funciones:Manipulación de cadenas en Objective-C

  • concatenación
  • Encontrar la longitud de una cadena (cadenas en especial de varios bytes/UTF-8; hago un montón de trabajo con idiomas de Asia oriental)
  • Tirar de sólo una parte de una cadena (por ejemplo, el "foobar" fuera de "abcfoobarxyz")
  • Busca dentro de una cadena (véase el ejemplo anterior)
  • Cambio de caso (superior, inferior, título si es simple de do)
  • Exploding/Imploding stri ngs (p. crear y obtener información de listas separadas por comas)
  • buscar/reemplazar dentro de cadenas
  • cualquier otra función de cadena de utilidad general que podrían estar disponibles
+0

leer la documentación? –

Respuesta

42

Ejemplos: concatenación:

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

Longitud de cadena:

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

borrar texto de cadena:

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

mayúsculas/minúsculas/TitleCase:

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

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

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

Buscar/Reemplazar

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

espero que esto ayude!

PD: No olvide verificar la documentación, y Google es su amigo.Buena suerte

+0

¡Muchas gracias! He estado trabajando en mi camino a través de la documentación, pero a veces me resulta confuso, mientras que diseccionar extractos de código para ver cómo funciona generalmente no es un problema. – Kaji

+0

no hay problema. Solo tenga en cuenta que estas son funciones (separadas). Así que puede - y debería - usar los corchetes directamente en el código (como si tuviera un programa hello world: '- (IBAction) helloButtonClicked: (id) sender {[textField setStringValue: [@" HELLO WORLD "lowercaseString]];} 'Diviértete –

+0

¡Genial! Tienes razón, Google es mi amigo, ¡me ayuda a encontrar cosas en StackOverflow! – mpemburn

2

En Xcode, presione CMD-SHIFT-D y la búsqueda de NSString.h, NSMutableString y/o NSScanner

abrir esos archivos y mirar todas las cosas que puede hacer con NSStrings. Esto debería decirle qué funciones hay.

Por cierto, esto debería ser una segunda naturaleza para usted, ya que usará esto mucho para descubrir cuáles son las funciones y/o delegados.

1

Aquí está una rutina de "caso de título" para usted:

- (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í, pero el título debería hacer la primera letra de cada palabra capital, por lo que tendría que analizar la cadena para separar palabras, etc. –

+2

In ese caso, puede usar 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]; 
}