¿Cómo dividir cadenas en subcadenas en iOS?

votos
80

Recibí un nsstring del servidor. Ahora quiero dividirlo en la subcadena que necesito. Cómo dividir la cadena?

Por ejemplo:

substring1: leer del segundo personaje al 5to personaje

substring2: lee 10 caracteres del 6º personaje.

Publicado el 27/02/2009 a las 10:17
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
211

También puede dividir una cadena por una subcadena, utilizando el método componentsSeparatedByString de NString .

Ejemplo de documentación:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
Respondida el 27/02/2009 a las 10:43
fuente por usuario

votos
38

NSString tiene algunos métodos para esto:

[myString substringToIndex:index];
[myString substringFromIndex:index];
[myString substringWithRange:range];

Consulte la documentación de NSString para obtener más información.

Respondida el 27/02/2009 a las 10:20
fuente por usuario

votos
0

Escribí un pequeño método para dividir cadenas en una determinada cantidad de piezas. Tenga en cuenta que sólo es compatible con caracteres separadores individuales. Pero creo que es una forma eficiente para dividir una NSString.

//split string into given number of parts
-(NSArray*)splitString:(NSString*)string withDelimiter:(NSString*)delimiter inParts:(int)parts{
    NSMutableArray* array = [NSMutableArray array];

    NSUInteger len = [string length];
    unichar buffer[len+1];

    //put separator in buffer
    unichar separator[1];
    [delimiter getCharacters:separator range:NSMakeRange(0, 1)];

    [string getCharacters:buffer range:NSMakeRange(0, len)];

    int startPosition = 0;
    int length = 0;
    for(int i = 0; i < len; i++) {

        //if array is parts-1 and the character was found add it to array
        if (buffer[i]==separator[0] && array.count < parts-1) {
            if (length>0) {
                [array addObject:[string substringWithRange:NSMakeRange(startPosition, length)]];

            }

            startPosition += length+1;
            length = 0;

            if (array.count >= parts-1) {
                break;
            }

        }else{
            length++;
        }

    }

    //add the last part of the string to the array
    [array addObject:[string substringFromIndex:startPosition]];

    return array;
}
Respondida el 13/12/2016 a las 07:24
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more