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.

Chilly Zhong
quelle
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:@", "];
codelogic
quelle
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.

Joel Levin
quelle
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;
}
ben
quelle