Quiero dividir un NSString
en un NSArray
. Por ejemplo, dado:NSString a NSArray
NSString *[email protected]"ABCDEF";
quiero una NSArray
como:
NSArray *myArray={A,B,C,D,E,F};
cómo hacer esto con Objective-C y Cocoa?
Quiero dividir un NSString
en un NSArray
. Por ejemplo, dado:NSString a NSArray
NSString *[email protected]"ABCDEF";
quiero una NSArray
como:
NSArray *myArray={A,B,C,D,E,F};
cómo hacer esto con Objective-C y Cocoa?
NSMutableArray *chars = [[NSMutableArray alloc] initWithCapacity:[theString length]];
for (int i=0; i < [theString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%C", [theString characterAtIndex:i]];
[chars addObject:ichar];
}
Esta es una solución ingenua que no maneja parejas sustitutas o personajes compuestos, como subraya astutamente @JeremyP en su comentario sobre la pregunta. Además, no olvide liberar la matriz cuando no esté usando GC o ARC. –
This link contiene ejemplos para dividir una cadena en una matriz basada en cadenas de sub y sobre la base de las cadenas en un conjunto de caracteres. Espero que la publicación te ayude.
Este es el código SNIP
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
NSString *ichar = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
[characters addObject:ichar];
}
Considera mejorar tu publicación ya que tu respuesta es esencialmente un enlace. Ver: [¿Las respuestas que solo contienen enlaces en otros sitios son realmente "buenas respuestas"?] (Http://meta.stackexchange.com/q/8231/156620) y [¿Por qué los enlaces son malos?] (Http: //meta.stackexchange) .com/q/7515/156620) –
@Bavarious, ¿Es eso suficiente? ;-) – EmptyStack
@Bavarious de acuerdo, La respuesta que tiene solo un enlace no es más útil una vez que la URL se apaga. Así que ** EmptyStack ** por favor! Intente publicar algún código que pueda ayudar en el futuro para cualquier persona. ¡¡Gracias!! – swiftBoy
Conversión
NSString * string = @"A B C D E F";
NSArray * array = [string componentsSeparatedByString:@" "];
//Notice that in this case I separated the objects by a space because that's the way they are separated in the string
registro
NSLog(@"%@", array);
Esto es lo que volvió la consola
¿Qué tal esto, si tiene NSString * myString = @ "ABCDEF"; **sin espacio** ?? – swiftBoy
Necesita algo para separarlo. –
De lo contrario, podría usar un 'For Loop' y subscribir los caracteres en Strings. –
Sin bucle puede utilizar esto:
NSString *myString = @"ABCDEF";
NSMutableString *tempStr =[[NSMutableString alloc] initWithString:myString];
if([myString length] != 0)
{
NSError *error = NULL;
// declare regular expression object
NSRegularExpression *regex =[NSRegularExpression regularExpressionWithPattern:@"(.)" options:NSMatchingReportCompletion error:&error];
// replace each match with matches character + <space> e.g. 'A' with 'A '
[regex replaceMatchesInString:tempStr options:NSMatchingReportCompletion range:NSMakeRange(0,[myString length]) withTemplate:@"$0 "];
// trim last <space> character
[tempStr replaceCharactersInRange:NSMakeRange([tempStr length] - 1, 1) withString:@""];
// split into array
NSArray * arr = [tempStr componentsSeparatedByString:@" "];
// print
NSLog(@"%@",arr);
}
Este espacio de agregación solución frente a cada personaje con la ayuda de la expresión regular y utiliza componentsSeparatedByString
con <space>
para devolver una matriz
NSMutableArray *letterArray = [NSMutableArray array];
NSString *letters = @"ABCDEFक्";
[letters enumerateSubstringsInRange:NSMakeRange(0, [letters length])
options:(NSStringEnumerationByComposedCharacterSequences)
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[letterArray addObject:substring];
}];
for (NSString *i in letterArray){
NSLog(@"%@",i);
}
resultados en
A
B
C
D
E
F
क्
enumerateSubstringsInRange:options:usingBlock:
disponible para iOS 4+ pueden enumerar una cadena con diferentes estilos. Uno se llama NSStringEnumerationByComposedCharacterSequences
, lo que va a enumerar letra por letra, pero es sensible a pares suplentes, personajes de base más marcas de combinación, Hangul Jamo, y grupos de consonantes Indic, todo referido como Compuesto Carácter
Tenga en cuenta, que el accepted answer "traga" y rompe
क्
en क
y ्
.
En Swift, esto se vuelve muy simple.
Swift 3:
myString.characters.map { String($0) }
Swift 4:
myString.map { String($0) }
¿Cómo desea para manejar los pares suplentes y caracteres compuestos de UTF-16 caracteres? – JeremyP
debes aceptar una respuesta – Brenden