SwiftUI 在搜索结果中突出显示单词

Posted

技术标签:

【中文标题】SwiftUI 在搜索结果中突出显示单词【英文标题】:SwiftUI highlight word in search result 【发布时间】:2020-06-30 11:11:39 【问题描述】:

我有一个搜索视图,用户可以在其中按单词或短语搜索并过滤结果。

        List 
            ForEach(textsData) text in
                if text.sometext.localizedCaseInsensitiveContains(self.searchText) || self.searchText == "" 
                    NavigationLink(destination: TextView(text: text)) 
                        Text(text.sometext)
                    
                
                
            
        

我想用红色突出显示搜索到的文本。有什么办法可以吗?

UPD: 假设代码如下:

struct ContentView: View 
    
    var texts = ["This is an example of large text block", "This block is rather small"]
    
    var textsSearch = "large"
    
    var body: some View 
        List 
            ForEach(self.texts, id: \.self) text in
                Text(text).padding().background(self.textsSearch == text ? Color.red : .clear)
            
        
    

我只想在输出中突出显示“大”这个词:

这是文本块的示例

这个块比较小

UPD2:这个答案对我很有效:SwiftUI: is there exist modifier to highlight substring of Text() view?

【问题讨论】:

【参考方案1】:

这应该可行。您通常可以将条件直接添加到修饰符中:

struct ContentView: View 
    
    var texts = ["a", "b"]
    
    var textsSearch = "a"
    
    var body: some View 
        List 
            ForEach(self.texts, id: \.self) text in
                Text(text).padding().background(self.textsSearch == text ? Color.red : .clear)
            
        
    


【讨论】:

感谢您的评论!不幸的是,这仅在文本值完全等于搜索值时才有效。在我的情况下,文本值可能具有“这是大文本块的示例”并且 searchTest 可能是“大”。所以我想在文本输出中突出显示“大”这个词 在这种情况下我应该怎么做才能突出显示“大”这个词? struct ContentView: View var texts = ["This is an example of large text block", "This block is rather small"] var textsSearch = "large" var body: some View List ForEach(self.texts, id: \.self) text in Text(text).padding().background(self.textsSearch == text ? Color.red : .clear)

以上是关于SwiftUI 在搜索结果中突出显示单词的主要内容,如果未能解决你的问题,请参考以下文章

基于正则表达式在闪亮的 DT 中突出显示单词

静态 HTML 页面中的 JQuery 搜索,突出显示找到的单词

在 SwiftUI 中突出显示语音话语

从文本输入中突出显示 div 中的所有匹配单词

在 Notepad++ 中智能突出显示时显示出现次数

Android - 在 TextView 中突出显示一个单词?