Ich habe ein C # -Projekt, das ich nach Objective-C portieren möchte. Von dem, was ich über Obj-C verstehe, sieht es so aus, als gäbe es eine verwirrende Vielfalt von Regex-Optionen, aber ich sehe nichts über eine Art, eine Ersetzung mit Callback durchzuführen.
Ich suche nach etwas, das dem C # MatchEvaluator-Delegaten oder PHP's preg_replace_callback entspricht. Ein Beispiel für das, was ich in C # machen möchte, ist -
%Vor%Wie könnte ich das in Objective-C machen? In meiner aktuellen Situation hat der Regex jedoch sowohl Lookahead- als auch Lookbehind-Assertionen, so dass jede Alternative, die das Auffinden der Strings im Voraus und das anschließende Ausführen einer Reihe von String-Ersetzungen betrifft, leider nicht funktioniert.
Die Foundation verfügt über eine Klasse NSRegularExpression (iOS4 und später), was für Sie nützlich sein kann. Aus der Dokumentation:
Die grundlegende Matching-Methode für NSRegularExpression ist ein Block Iterator-Methode, die Clients ermöglicht Liefern ein Block-Objekt, das sein wird wird jedes Mal aufgerufen, wenn das Reguläre Ausdruck entspricht einem Teil des Zielzeichenfolge Es gibt zusätzliche bequeme Methoden für die Rückgabe aller die Übereinstimmungen als ein Array, die Summe Anzahl der Spiele, das erste Spiel, und die Reichweite der ersten Übereinstimmung.
Zum Beispiel:
%Vor%Ich habe den Code von atshum modifiziert, um es etwas flexibler zu machen:
%Vor%Scheint für jetzt zu funktionieren (wahrscheinlich braucht ein bisschen mehr Tests)
Tags und Links objective-c regex replace callback nsregularexpression