2009-07-28 11 views
13

Estoy teniendo un NSString a la que estoy estiliza al inicio y fin de los espacios en blanco. Ahora quiero hacer que el primer alfabeto o letra de la cadena aparezca como mayúscula.primera letra del NSString Capital en iPhone dev

¿Hay alguna corta, o tengo que tomar el primer alfabeto y convertirla en la capital por mi cuenta.

TNX.

Respuesta

37

Tienes que hacerlo a mano. Esta es una de las cosas que mucha gente ha incorporado en las categorías con tanta frecuencia que Apple probablemente no se atreva a agregarlo como un método real, ya que generaría colisiones de categorías.

NSString *firstCapChar = [[string substringToIndex:1] capitalizedString]; 
NSString *cappedString = [string stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:firstCapChar]; 

Por supuesto, hay muchas otras soluciones que utilizan NSMutableString o cualquier otra forma que le guste hacerlo utilizando unichar o lo que sea.

+0

Increíble amigo, funciona, todo lo que quiero. – rkb

+4

Esto no haría que otras letras sean minúsculas. Una solución complementaria para ese caso sería algo así como: text = [NSString stringWithFormat: @ "% @% @", [[text substringToIndex: 1] uppercaseString], [[text substringFromIndex: 1] lowercaseString]]; – saulobrito

7
- (NSString *)capitalizedString 

hará todas las palabras en la cadena inicialmente en mayúscula. Si solo tiene una o dos palabras en su cadena, esto puede ser lo que desea.

Here is the NSString class reference.

+0

No, solo quiero que el primer alfabeto sea mayúscula y no toda la cadena o las palabras completas. – rkb

+0

Es extraño, pero parece que no lo hace disponible para iOS? – Darmen

0

@BrianRamsay respuesta es buena pero hace que todas las palabras en mayúsculas en lugar de sólo el primero. He creado una categoría cómodo para @RobNapier respuesta:

@interface NSString (Initcap) 

@property (readonly) NSString *initcappedString; 

@end 

@implementation NSString (Initcap) 

- (NSString *)initcappedString { 
    NSString *firstCapChar = [[self substringToIndex:1] capitalizedString]; 
    return [self stringByReplacingCharactersInRange:NSMakeRange(0,1) 
             withString:firstCapChar]; 
} 

@end 

Siguiente utilizar de esta manera str.initcappedString.

Cuestiones relacionadas