2016-03-18 16 views
-1

Swift 2.xで「AB」で始まり「ZX」で終わる文字列を検索して置換するにはどうすればよいですか?Swiftの文字列の開始と終了の文字列を検索し置換する正規表現

編集:私はABとZXの文字列を維持したいと思います。例えば

first situation: AB_asdad_ZX 
second situation: _asdad_ 

(私は空の文字列( "" で置き換えたい)が、ABとZXの間で維持)

+0

文字列全体、両端、中央、または別のものを置き換えますか?非正規表現の解決法もあなたのために働くでしょうか?文字列が配列の中、テキストの真ん中、または他の場所ですか? – ColGraff

+0

何を試しましたか?私は、 "アンカーされた"正規表現とキャプチャグループをオンラインで検索することをお勧めします。それを理解するために少しの研究が必要です。 –

+0

@KennethBruno実際、私は特定の配列のすべての文字列を変更したいと思います。正規表現の有無にかかわらず、解決法。どちらが速いか。 – mathema

答えて

0

あなたは次のようにそれを行うことができます:"\\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とZXの間を行きたい。あなたの例では、_WHATEVER_ZX文字列を保持したいと思います。私はちょうど空の文字列( "")とABの間の文字列ABを置き換えるが、ABとZXの間に保つこと – mathema

+0

それは簡単に範囲startIndex.successor()を使用してください後継() –

+0

@ mathema私の編集を確認 –

0

は何のためにこの作業を行いますあなたが必要ですか?

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

文字列は、trim変数を使わずに配列に置き換えなければなりません。私はこのルールを同じ配列に適用したいと思う。 – mathema

+0

あなたは配列の他の文字列をそのままにして、見つかった文字列をトリム文字列に置き換えたいのですか? – ColGraff

+0

No.(old)// var配列1 = ["ABxxxZX"、 "ABasdZX"] //配列1 = ["xxx"、 "asd"] – mathema

関連する問題