在Swift上的uitextview中查找单词或字符

时间:2014-08-25 21:10:59

标签: ios swift uitextview

我想学习在uitextview上搜索单词或字符。

我用过:rangeOfIndex(uitextfield.text)

但这只是我找到的第一个。如果uitextview包含4次相同的单词,则rangeOfIndex仅显示第一个。

谢谢。

3 个答案:

答案 0 :(得分:2)

试试这个

 let searchString = "abc"
 let baseString = "This is DEMO APP abc \"abc\" more th. abcabcABCAbc."

 let attributed = NSMutableAttributedString(string: baseString)

 var error: NSError?
 let regex = NSRegularExpression(pattern: searchString, options: .CaseInsensitive, error: &error)

 if let regexError = error {
println("Oh no! \(regexError)")
  }   
 else {
    for match in regex.matchesInString(baseString, options: NSMatchingOptions.allZeros, range: NSRange(location: 0, length: baseString.utf16Count)) as [NSTextCheckingResult] {
    attributed.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellowColor(), range: match.range)
  }

textView.attributedText = attributed
}

答案 1 :(得分:1)

要计算UITextField.text中的字符,可以使用countElements()方法。

let textfield:UITextField = UITextField()
textfield.text = "same word same word"
let count = countElements(textfield.text) // count will have value of 19

答案 2 :(得分:0)

    var count = 0
    let text2 = txtArama.text.lowercaseString as NSString
    let text = txtMetin.text.lowercaseString as NSString
    let attributedText = NSMutableAttributedString(attributedString: txtMetin.attributedText)
    println("\(text.length)")
    println("\(text2.length)")
    var aralik:NSRange
    var checker:NSString = ""

    for(var i=0 ; i <= text.length - text2.length ; i++)
    {
        aralik = NSMakeRange(i, text2.length)
        checker = text.substringWithRange(aralik)
        if(text2 == checker)
        {
            attributedText.addAttribute(NSBackgroundColorAttributeName, value: UIColor(red: 0, green: 0.5, blue: 1, alpha: 0.2) ,
                range: aralik)
            txtMetin.attributedText = attributedText
            count++
        }
    }
    println("\(count)")
    lblArananKelime.text = txtArama.text.lowercaseString
    lblArananKelimeSayisi.text = toString(count)

我希望这可以帮助你