Color all occurrences of string in swift

前端 未结 6 1063
旧巷少年郎
旧巷少年郎 2020-11-29 11:33

This code

var textSearch=\"hi\"
var textToShow=\"hi hihi hi\" 
var rangeToColor = (textToShow as NSString).rangeOfString(textSearch)
var attributedString =          


        
6条回答
  •  难免孤独
    2020-11-29 11:43

    Swift 5

    let attrStr = NSMutableAttributedString(string: "hi hihi hey")
    let inputLength = attrStr.string.count
    let searchString = "hi"
    let searchLength = searchString.characters.count
    var range = NSRange(location: 0, length: attrStr.length)
    
    while (range.location != NSNotFound) {
        range = (attrStr.string as NSString).range(of: searchString, options: [], range: range)
        if (range.location != NSNotFound) {
            attrStr.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.yellow, range: NSRange(location: range.location, length: searchLength))
            range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length))
        }
    }
    

    Swift 3

    let attrStr = NSMutableAttributedString(string: "hi hihi hey")
    let inputLength = attrStr.string.characters.count
    let searchString = "hi"
    let searchLength = searchString.characters.count
    var range = NSRange(location: 0, length: attrStr.length)
    
    while (range.location != NSNotFound) {
        range = (attrStr.string as NSString).range(of: searchString, options: [], range: range)
        if (range.location != NSNotFound) {
            attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.yellow(), range: NSRange(location: range.location, length: searchLength))
            range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length))
        }
    }
    

    Swift 2

    let attrStr = NSMutableAttributedString(string: "hi hihi hey")
    let inputLength = attrStr.string.characters.count
    let searchString = "hi"
    let searchLength = searchString.characters.count
    var range = NSRange(location: 0, length: attrStr.length)
    
    while (range.location != NSNotFound) {
        range = (attrStr.string as NSString).rangeOfString(searchString, options: [], range: range)
        if (range.location != NSNotFound) {
            attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.yellowColor(), range: NSRange(location: range.location, length: searchLength))
            range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length))
        }
    }
    

提交回复
热议问题