2016-03-18 28 views
-1

(ör.) "AB" ile başlayan ve Swift 2.x ile biten "ZX" ile başlayan dizeyi bulmak ve değiştirmek için nasıl regex yapabilirim?Hızlı başlangıç ​​ve bitiş metnini değiştirme ve değiştirme metni Normal

Düzenleme: AB ve ZX dizesi arasında tutmak istiyorum. Örneğin.

first situation: AB_asdad_ZX 
second situation: _asdad_ 

+0

Bütün dizeyi, uçları, ortayı başka bir şeyle değiştirmek ister misiniz? Regeeks olmayan bir çözüm sizin için de çalışır mı? Dize bir dizide mi, metnin ortasında mı yoksa başka bir yerde mi? – ColGraff

+0

Ne denediniz? "Bağlantılı" normal ifadeler ve yakalama gruplarında çevrimiçi arama yapmanızı öneriyorum. Anlamak için biraz çalışma gerekiyor. –

+0

@KennethBruno aslında, belirli dizilerdeki tüm dizeleri değiştirmek istiyorum. Regex ile veya içermeyen çözüm. hangisi daha hızlıysa – mathema

cevap

0

Sen aşağıdaki gibi yapabilirsin (ben boş dize (""), ancak AB ve ZX arasında tutulması ile değiştirmek istiyor): "\\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

AB ve ZX arasında tutmak istiyorum. Örneğinizde _WHATEVER_ZX dizesini tutmak istiyorum. Sadece boş dize ("") ile ZX arasındaki boş dizgeyi ("") değiştirip AB ile ZX – mathema

+0

arasında kalmayı tercih ediyorum, sadece aramayı başlatıyorum startIndex.successor(). Successor() –

+0

Mathema benim kontrol et –

0

için bu çalışır mı neyi ihtiyacın var mı

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

Dize, trim değişkenini kullanmadan dizide değiştirilmelidir. Bu kuralı aynı dizide uygulamak istiyorum. – mathema

+0

Dizideki diğer dizeleri tek başına bırakmak ve bulunan dizeyi kesilmiş olanlarla değiştirmek mi istiyorsunuz? – ColGraff

+0

Numara (eski) // var dizi1 = ["ABxxxZX", "ABasdZX"] // dizi1 = ["xxx", "asd"] – mathema

İlgili konular