Position und Anzahl aufeinanderfolgender Zeichen in NSString

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Position und Anzahl aufeinanderfolgender Zeichen in NSString

    Hallo Entwickler,

    ich möchte eine Methode schreiben, mit der ich die Position und die Anzahl eines bestimmten Zeichens in einem NSString bestimmen kann.

    Hier ein Beispiel:

    Quellcode

    1. NSString *sTestString = @"abc///defgh/ijkl////mno";
    2. - (NSArray *)count:(NSString *)sChar inString:(NSString)*sString;

    Ich erwarte als Rückgabewert ein NSArray. In jedem Eintrag ist wieder ein Array mit 2 NSNumbers.
    Die erste gibt die Position, die zweite die Länge an.

    Am obigen Beispiel bezogen auf den / wäre es:

    Quellcode

    1. @[@[[NSNumber numberWithInteger:3], [NSNumber numberWithInteger:3]], @[[NSNumber numberWithInteger:11], [NSNumber numberWithInteger:1]], @[[NSNumber numberWithInteger:16], [NSNumber numberWithInteger:4]]];


    Hat jemand eine Idee, wie man das am besten umsetzen kann?
    Es geht auch um Performance, da dieses Verfahren oft und mit vielen Strings angewendet werden soll.
  • ok, wenns um performance geht dann vergiss die rückgabe als NSArray mit NSArrays mit NSSNumber objekten drin.

    was willst du mit den werten machen? da gibt es sicher effektive wege wie du dann auch die daten orendltich weiterverwenden kannst.

    um die zeichen und dessen ranges rauszufinden am besten das char oder unichar array vom NSString (in einer bestimmten endcoidng) holen, dann geht das ganz flink!
  • Mit regulären Ausdrücken gibt's das doch schon fix und fertig in Cocoa:

    Quellcode

    1. NSString *sTestString = @"abc///defgh/ijkl////mno";
    2. NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/+" options:NSRegularExpressionDotMatchesLineSeparators error:nil];
    3. NSArray *result = [regex matchesInString:sTestString options:0 range:NSMakeRange(0, [sTestString length])];
    4. NSLog(@"%@", result);
    Michael