swift 搜索子字符串添加下划线

325 阅读1分钟

` 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

    }

} `