UITextView使用swift突出显示所有匹配项
发布时间:2020-12-14 05:29:43 所属栏目:百科 来源:网络整理
导读:我想通过搜索突出显示所有匹配单词.我写了代码,但我不能使用循环.当我搜索一个单词时,我的应用程序会找到单词并突出显示第一个单词.这是我的代码 var count = 0let attributedText = NSMutableAttributedString(attributedString: txtMetin2.attributedText)
我想通过搜索突出显示所有匹配单词.我写了代码,但我不能使用循环.当我搜索一个单词时,我的应用程序会找到单词并突出显示第一个单词.这是我的代码
var count = 0 let attributedText = NSMutableAttributedString(attributedString: txtMetin2.attributedText) let text2 = txtArama.text as NSString let text = txtMetin2.text as NSString var range:NSRange var checker:NSString = "" for(var i=0 ; i<text.length - text2.length-1 ; i++) { range = NSMakeRange(i,text2.length) checker = text.substringWithRange(range) if(text2 == checker) { count++ let highlightedRange = text.rangeOfString("(text2)") attributedText.addAttribute(NSBackgroundColorAttributeName,value: UIColor.blueColor(),range: highlightedRange) let textAttachment = NSTextAttachment() let textAttachmentString = NSAttributedString(attachment: textAttachment) attributedText.appendAttributedString(textAttachmentString) txtMetin2.attributedText = attributedText } } println("(count)") 我很快就是新人.抱歉编码不好.我的代码找到匹配数,但我怎么能突出所有匹配谢谢你
基于强制性
NSRegularExpression的解决方案.
let searchString = "this" let baseString = "This is some string that contains the word "this" more than once. This substring has multiple cases. ThisthisThIs." 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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |