UITextView 在数据库中搜索关键字

Posted

技术标签:

【中文标题】UITextView 在数据库中搜索关键字【英文标题】:UITextView searching for keywords in a database 【发布时间】:2019-05-23 05:39:49 【问题描述】:

我想检查用户是否在 UITextView 中为科学应用键入了特定短语。我有这个当前代码,它创建一个最后 20 个字符的字符串,然后检查该字符串是否包含 arrayOfWords 中的一个单词,该单词在 textViewDidChange 上执行:

var arrayOfWords = [“Gold", “Phosphorus”]

func textViewDidChange(_ textField: UITextView) 
    if let selectedRange = textView.selectedTextRange 
        let cursorPosition = textView.offset(from: textView.beginningOfDocument, to: selectedRange.start)
        let startRange = cursorPosition - 20
        let result = textView.text.substring(from: startRange, to: cursorPosition)

        checkIfContains(textViewString: result)
    

func checkIfContains(textViewString: String)  
    if arrayOfWords.contains(where: textViewString.contains) 
        doAction()
    

我知道这是一个非常具体的功能,因此对于我如何实现此功能的任何想法将不胜感激。

【问题讨论】:

用空格分隔字符串并检查最后分隔的部分是否可以转换为浮点数,或者让用户按下按钮来检查字符串是否是特定的应用程序 @Lu_ “用空格分隔字符串”是什么意思。如何做到这一点? 【参考方案1】:

尝试查看正则表达式 (REGEX)。

在你的情况下,正则表达式应该看起来像"([A-Za-z]\w+ [1-9]\.[1-9]*) "(注意最后的空格)

然后在您的textViewDidChange 中,只要文本与正则表达式匹配,您就可以触发您的获取方法,并且考虑到最后有一个空格,它只会在用户按您所说的按空格时触发。

这是一个尝试你的正则表达式的链接:https://regexr.com/

这里是一个在 swift 中使用正则表达式的例子:https://***.com/a/27880748/5464805

【讨论】:

非常感谢!!这是完美的!【参考方案2】:

您可以分离字符串并尝试将其转换为浮点数:

    let someText = "here will be text from textView 3.5"
    let arrayOfWords = someText.split(separator: " ")

    // more than two words? if not, exit
    guard arrayOfWords.count >= 2 else  return 

    // now you can check if last `word` ca be a Float
    let last = String(arrayOfWords.last ?? "")
    if let number = Float(last), let wordBefore = arrayOfWords[arrayOfWords.count - 2] 
        // here you have number
        print(number)

        // here word before
        print(wordBefore)
    

【讨论】:

这是否只是检查字符串中是否有数字?我需要它来只获得“单词”之后的数字。上面的例子... 所以以那个例子为基础,我不知道你可以在 if 语句中检查那个数字之前的单词的所有要求。 例如“金 3.6”或“磷 2.54”。我需要该函数能够取出遵循此结构的一条数据(Word +(数字)+。+(anotherNumber)),您建议的当前函数似乎只能在字符串中找到数字。

以上是关于UITextView 在数据库中搜索关键字的主要内容,如果未能解决你的问题,请参考以下文章

UITextView 中不必要的换行符

SwiftUI UITextView 协调器不起作用

从UITextView创建PDF

Swift:在 UITextView 中使用占位符文本禁用空白/换行符文本的栏按钮

UITable Cell 在单元格中有 UITextView 时无法选择

在 UITextView 上调用 setAttributedText 会重置字体大小,我不知道为啥