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 在数据库中搜索关键字的主要内容,如果未能解决你的问题,请参考以下文章
Swift:在 UITextView 中使用占位符文本禁用空白/换行符文本的栏按钮