2017-04-23 67 views
2

我遇到了我的replaceOccurrences函數的問題。我有一個字符串,像這樣:Swift 3 replacedOccurrences正則表達式

let x = "&john &johnny &johnney" 

我需要做的是隻刪除「&約翰」

所以我有這樣的代碼:

y = "&john" 
x = x.replacingOccurrences(of: y, with: " ", options: NSString.CompareOptions.regularExpression, range: nil) 

我得到的問題是,這刪除約翰的所有實例...而我剩下:

"ny ney" 

另外我想過設置t但是,他的範圍不會真正解決我的問題,因爲名稱可能會有不同的順序。

+0

應該發生什麼'「和約翰,和約翰 - 約翰!」':

不同,需要檢查,如果查詢的到底是一個單詞邊界的正則表達式只刪除&John? –

回答

-2

您可能要包括你要刪除的字符串的結尾空格:

y = "&john "

1

添加空格字符串,使之成爲" &john "。現在它不會刪除不必要的字符。

但是,如果&john是名稱列表中的第一個或最後一個,則這將不起作用。爲了解決這個問題,你只需要通過調用hasSuffixhasPrefix來檢查字符串是否有後綴或前綴&john

其實,我只是想到了一個更好的解決方案:

x = x.components(separatedBy: " "). 
    filter { $0 != "&john" }.joined(separator: " ") 
2

首先你的代碼不編譯,因爲x必須var

var x = "&john &johnny &johnney" 

let pattern = "&john\\b" 
x = x.replacingOccurrences(of: pattern, with: " ", options: .regularExpression)