我想要檢測以#
開頭的單詞,並返回其特定範圍。起初,我嘗試使用下面的代碼:如何獲取特定子串的範圍(即使重複)
for word in words {
if word.hasPrefix("#") {
let matchRange = theSentence.range(of: word)
//Do stuff with this word
}
}
這工作得很好,但如果你有一個重複的主題標籤,將返回的主題標籤中第一次出現的範圍。這是因爲range(_:)
函數的性質。
說我有以下字符串:
"The range of #hashtag should be different to this #hashtag"
這將返回(13, 8)
兩個井號標籤的時候,確實它應該返回(13, 8)
以及(50, 8)
。這怎麼解決?請注意,emojis也應該能夠在哈希標籤中被檢測到。
編輯
如果你想知道如何做到這一點使用表情符號來,去here
你應該忽略最後發現#和字符串超出最後發現'hastag'所以它會消除最後的位置,你查詢應該是'而(theSentence.range(作者:!「#」)=無)' – iphonic
如果你打算使用正則表達式,那麼這可能會有所幫助:http://stackoverflow.com/a/27880748/1187415,它正確處理所有Unicodes(Emojis,flags,...)。 –