2016-03-18 1 views
-1

Wie kann ich regex zum Suchen und Ersetzen Zeichenfolge beginnt mit (z. B.) "AB" und endet mit "ZX" in Swift 2.x?Regex zum Suchen und Ersetzen String Anfang und Ende Text in Swift

Edit: Ich möchte zwischen AB und ZX String bleiben. z.B.

first situation: AB_asdad_ZX 
second situation: _asdad_ 

(Ich möchte mit leeren String (""), sondern halten zwischen AB und ZX ersetzen)

+0

Möchten Sie die gesamte Zeichenfolge, die Enden, die Mitte, etwas anderes ersetzen? Würde eine Nicht-Regex-Lösung auch für Sie funktionieren? Ist die Zeichenfolge in einem Array, in der Mitte des Texts oder an einem anderen Ort? – ColGraff

+0

Was hast du probiert? Ich schlage vor, online nach "verankerten" regulären Ausdrücken zu suchen und Gruppen zu erfassen. Es bedarf einer kleinen Studie, um es herauszufinden. –

+0

@KennethBruno eigentlich möchte ich alle Zeichenfolgen in bestimmten Array ändern. Die Lösung mit oder ohne Regex. je nachdem, was schneller ist. – mathema

Antwort

0

Sie können es wie folgt tun: "\\bAB\\w+ZX\\b"

var strings = ["AB_any_ZX","AB_whatever_ZX","HELLO"] 

for (index, str) in strings.enumerate() { 
    if let range = str.rangeOfString("\\bAB\\w+ZX\\b", options: .RegularExpressionSearch) { 
     strings[index] = str.substringWithRange(range.startIndex.successor().successor()..<range.endIndex.predecessor().predecessor()) 

    } 
} 

print(strings) // "["_any_", "_whatever_", "HELLO"]\n" 
+0

Ich möchte zwischen AB und ZX halten. In Ihrem Beispiel möchte ich die Zeichenfolge _WHATEVER_ZX beibehalten. Ich möchte nur die Zeichenfolge AB zwischen und ZX durch leere Zeichenfolge ("") ersetzen, aber zwischen AB und ZX – mathema

+0

das ist einfach einfach den Bereich startIndex.successor(). Nachfolger() –

+0

@mathema überprüfen Sie meine Bearbeitung –

0

Ist diese Arbeit für das, was du brauchst?

import Foundation 

var strings = ["AB111ZX","CD123EF","AB222ZX","A123ZX","AB123X","AB123","123ZX"] 

strings = strings.flatMap { 
    guard $0.hasPrefix("AB") && $0.hasSuffix("ZX") else { return nil } 
    return $0.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "ABZX")) 
} 

print(strings) 

// ["111","222"] 
+0

Die Zeichenfolge muss im Array ersetzt werden, ohne die Trimmvariable zu verwenden. Ich möchte diese Regel auf das gleiche Array anwenden. – mathema

+0

Sie meinen, Sie wollen die anderen Strings im Array alleine lassen und die gefundene Zeichenfolge durch getrimmte ersetzen? – ColGraff

+0

Nr. (Alt) // var array1 = ["ABxxxZX", "ABasdZX"] // array1 = ["xxx", "asd"] – mathema