` extension String {
func addMoreKeyWordsAttributedUnderLineString(links: [String], members: (keywrod: String, color: UIColor)...) -> NSAttributedString {
let mutableAttributedString = NSMutableAttributedString.init(string: self)
if members.isEmpty {
return mutableAttributedString
}
for i in members {
let keywrod = i.keywrod
let color = i.color
if keywrod.isEmpty {
continue
}
let text = NSString.init(string: self)
var range = text.range(of: keywrod)
var searchRange = NSMakeRange(0, self.count)
while range.location != NSNotFound {
mutableAttributedString.addAttribute(NSAttributedString.Key.foregroundColor, value: color, range: range)
mutableAttributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: range)
searchRange = NSMakeRange(NSMaxRange(range), self.count - NSMaxRange(range))
range = text.range(of: keywrod, options: [.caseInsensitive],range: searchRange)
}
}
links.forEach { itemLink in
let itemLinkRange = NSString(string: self).range(of: itemLink)
mutableAttributedString.addAttribute(NSAttributedString.Key.link, value: itemLink, range: itemLinkRange)
}
return mutableAttributedString
}
} `