objective-c cocoa-touch nsstring

objective c - Cómo obtener un único carácter NSString de un NSString



objective-c cocoa-touch (4)

Esto también recuperará un carácter en el índice i como un NSString, y solo está usando una estructura NSRange en lugar de un NSString adicional.

NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];

Quiero obtener un personaje de algún lugar dentro de un NSString. Quiero que el resultado sea un NSString.

Este es el código que uso para obtener un único carácter en el índice:

[[s substringToIndex:i] substringToIndex:1]

Hay una mejor manera de hacerlo?


Si solo quieres obtener un personaje de un NSString, puedes probar esto.

- (unichar)characterAtIndex:(NSUInteger)index;

Usado así:

NSString *originalString = @"hello"; int index = 2; NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]]; //returns "e".


Su sugerencia solo funciona para caracteres simples como ASCII. NSStrings almacena unicode y si tu personaje es unichars largo, entonces podrías terminar con un galimatías. Utilizar

- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;

si quieres determinar cuántos Unichars es tu personaje. Uso esto para recorrer mis cadenas y determinar dónde se encuentran los bordes de los caracteres.

Ser totalmente unicodeable es un poco laborioso, pero depende de los idiomas que use. Veo una gran cantidad de texto asiático, así que la mayoría de los personajes se extienden desde un espacio, por lo que es el trabajo lo que tengo que hacer.


NSMutableString *myString=[NSMutableString stringWithFormat:@"Malayalam"]; NSMutableString *revString=@""; for (int i=0; i<myString.length; i++) { revString=[NSMutableString stringWithFormat:@"%c%@",[myString characterAtIndex:i],revString]; } NSLog(@"%@",revString);