2016-03-02 31 views
1

我一直在尋找一段時間,並想知道如何檢測更大字符串中的子字符串的多個位置。例如:如何檢測字符串中某個單詞的多次出現

let text = "Hello, playground. Hello, playground" 
let range: Range<String.Index> = text.rangeOfString("playground")! //outputs 7...<17 
let index: Int = text.startIndex.distanceTo(range.startIndex) //outputs 7, the location of the first "playground" 

我使用此代碼來檢測子串出現在字符串中的第一個位置,但它有可能檢測的「運動場」的第二次出現的位置,然後將第三等等等?

+0

Objective-C的答案在這裏,但邏輯也適用同樣的方式: NSString中子字符串的出現次數?](http://stackoverflow.com/questions/2166809/number-of-occurrences-of-a-substring-in-an-nsstring) – JAL

回答

3

這應該讓你NSRanges數組與「操場」

let regex = try! NSRegularExpression(pattern: "playground", options: [.CaseInsensitive]) 
let items = regex.matchesInString(text, options: [], range: NSRange(location: 0, length: text.characters.count)) 
let ranges: [NSRange] = items.map{$0.range} 

然後得到的字符串:

let occurrences: [String] = ranges.map{String((text as NSString).substringWithRange($0))} 
+0

已更新。範圍包含位置,事件包含字符串本身。 – PeejWeej

+0

完美謝謝! –

+0

沒問題。祝你好運! – PeejWeej

相關問題