当前位置: 首页 > 面试题库 >

UITextView使用swift突出显示所有匹配项

公沈浪
2023-03-14
问题内容

我想通过搜索突出显示所有匹配的单词。我写了代码,但是不能使用循环。当我搜索单词时,我的应用程序会找到单词并仅突出显示第一个单词。这是我的代码

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
}


 类似资料:
  • 问题内容: Eclipse不会为我突出显示匹配的变量: 我已经尝试通过更改“标记出现次数” 但这没用。我不确定在其他人已经能够解决此问题的同时,为什么这不起作用。 谁能告诉我如何设置突出显示的匹配变量? 用我的眼睛寻找相同的变量真的让我非常困扰。 问题答案: 尝试: 选择所有可用的选项。 也请前往: 比较“发生次数”和“写入发生次数”的设置 确保您没有选中其中之一的“文本显示为高亮显示”选项。 这

  • 问题内容: 我做了一个突出显示div中匹配单词的函数。但是如果有两个相同的单词被一个不同的单词分隔开,那么只有第一个单词会突出显示。因此,例如,如果搜索条件是单词“burn”,而在文本中是句子“ burn baby burn”,我希望它突出显示两个“ burn”。此jsFiddle演示了如何仅突出显示第一个“烙印”。这也是下面的代码。任何帮助,不胜感激。谢谢阅读。 CSS html javascr

  • 问题内容: 我希望突出显示匹配的结果。如果我提到字段名称,它对我有用,它返回突出显示的文本,但是,如果我将字段指定为“ _all”,则它不返回任何值。这对我有用: 这将返回预期值,如下所示:[突出显示] => stdClass对象([my_field] =>数组([0] => stackoverflow 是最适合技术人员的网站)) 但是当我给这个: 我得到空值/无结果。 如何使它在任何字段上都能使

  • 问题内容: 我正在尝试突出显示与查询匹配的文本,但是我不知道如何使标记显示为HTML而不是文本。 当前输出: Java 脚本 所需的输出: Java 脚本 问题答案: 这是我简单的twoliner辅助方法: 它返回一个跨度,其中所请求的零件以标签突出显示。如果需要,可以简单地将其修改为使用其他标签。 更新: 为避免唯一键丢失警告,这是一个基于跨度并为匹配的零件设置fontWeight样式的解决方案

  • 本文向大家介绍HTML 突出显示,包括了HTML 突出显示的使用技巧和注意事项,需要的朋友参考一下 示例 该<mark>元素是HTML5中的新元素,用于“由于其在另一个上下文中的相关性”而标记或突出显示文档中的文本。1 最常见的示例是用户输入搜索查询并显示结果以突出显示所需查询的搜索结果。 输出: 常见的标准格式是黄色背景上的黑色文本,但是可以使用CSS进行更改。

  • 我正在PyCharm中查看这个很酷的功能 但是我不知道mac上的这个按钮是什么: https://www.jetbrains.com/help/pycharm/2016.1/highlighting-usages.html