Wie teile ich einen String unter iOS in Teilzeichenfolgen auf?


83

Ich habe eine NSStringvom Server erhalten. Jetzt möchte ich es in den Teilstring aufteilen, den ich brauche. Wie teile ich die Saite?

Beispielsweise:

Teilzeichenfolge1: Lesen Sie vom zweiten zum fünften Zeichen

Teilzeichenfolge2: Lesen Sie 10 Zeichen aus dem 6. Zeichen.


1
Sie sollten das iPhone auf iOS ändern.
Ricardo

Antworten:


223

Sie können eine Zeichenfolge auch mithilfe der KomponentenkomponentenSeparatedByString von NString durch einen Teilstring teilen .

Beispiel aus der Dokumentation:

NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];

Kann ich Zeichenfolgen teilen, deren separate Markierungen unterschiedlich sind? zB @ "A, B ^ C ~ D"
Chilly Zhong

8
Sie sollten in der Lage sein, NSStrings "componentsSeparatedByCharactersInSet:" zu verwenden, um mehrere Zeichen aufzuteilen.
Codelogic

Hallo, ich habe die Zeichenfolge erfolgreich getrennt, aber ich möchte diese in UILabel getrennt festlegen. Irgendeine Idee?
Nikunj Jadav

Durchlaufen Sie Ihr Array: for (int i = 0; i <[listItems count]; i ++) und verwenden Sie [listItems objectAtIndex: i];
Domness

Vielen Dank! Ich mache ein wenig anders: `NSArray * listItems = [list componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];`
innuendoreplay

39

NSString hat hierfür einige Methoden:

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

Weitere Informationen finden Sie in der Dokumentation zu NSString.


1

Ich habe eine kleine Methode geschrieben, um Zeichenfolgen in eine bestimmte Anzahl von Teilen aufzuteilen. Beachten Sie, dass nur einzelne Trennzeichen unterstützt werden. Aber ich denke, es ist eine effiziente Möglichkeit, einen NSString zu teilen.

//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;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.