gpt4 book ai didi

string - 在 Scala 中将单词列表查找到字符串中

转载 作者:行者123 更新时间:2023-12-04 01:41:25 25 4
gpt4 key购买 nike

我需要查找单词列表(可以是集合或列表或其他结构)中的任何单词是否包含(作为子字符串)在另一个字符串中,我需要尽可能好的性能。

这可能是一个例子:

val query = "update customer set id=rand() where id=1000000009;" 
val wordList = Set("NOW(", "now(", "LOAD_FILE(", "load_file(", "UUID(", "uuid(", "UUID_SHORT(",
"uuid_short(", "USER(", "user(", "FOUND_ROWS(", "found_rows(", "SYSDATE(", "sysdate(", "GET_LOCK(", "get_lock(",
"IS_FREE_LOCK(", "is_free_lock(", "IS_USED_LOCK(", "is_used_lock(", "MASTER_POS_WAIT(", "master_pos_wait(",
"RAND(", "rand(", "RELEASE_LOCK(", "release_lock(", "SLEEP(", "sleep(", "VERSION(", "version(")

实现最佳性能的最佳选择是什么?我已经阅读了 contains 方法,但它不适用于子字符串。是遍历列表并使用方法 indexOf 的唯一选择还是有更好的选择?

最佳答案

对于 Scala 集合,用于回答诸如“此集合中是否有满足我的条件的项?”之类的问题的方法。是exists (当你到达那里时稍微向上滚动,因为 scaladoc 页面对于直接链接到方法很奇怪)。

你的条件是“字符串(查询)包含这个项目(词)吗?”为此,您可以使用 Stringcontains方法,来自 Java。

把它放在一起,你会得到

wordList.exists { word => query.contains(word) }
// or, with some syntax sugar
wordList exists { query.contains }

您还可以使用 .find 而不是 .exists,它将返回一个包含找到的第一个匹配项的选项,而不仅仅是一个指示是否存在的 bool 值发现了一些东西。

scala> wordList.exists(query.contains)
res1: Boolean = true

scala> wordList.find(query.contains)
res2: Option[String] = Some(rand()

关于string - 在 Scala 中将单词列表查找到字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com