regex - 如何将一个字符串与另一个之间有空格的字符串进行比较

标签 regex scala string-comparison

我如何比较这两个字符串:

val a = "fit bit versa"
val b = "fitbit"

另一个例子
val a = "go pro hero 6"
val b = "gopro"

另一个例子
val a = "hero go pro  6"
val b = "gopro"

另一个例子
val a = "hero 6 go pro"
val b = "gopro"

我想为上述比较获得“真实”但不是在这里:
val a = "vegan protein powder"
val b = "vega"

这应该是假的。

目前我正在做:
def matchPattern(a:String, b: String):String=
{
      val dd = a.split(" ")
      val result = dd.map(_.toLowerCase())
      if(result contains b.toLowerCase) true 
      else false
}

这适用于最后一种情况,但不适用于其余情况。

有什么建议吗?

最佳答案

这是使用 sliding(i) 的一种方法,其中 i范围从 2 到 a 中的字数, 组装所有可能连接的相邻单词的列表。然后检查是否b完全匹配列表中的任何元素,如下所示:

def matchPattern(a: String, b: String): Boolean = {
  val words = a.toLowerCase.split("\\s+")

  val concats = (2 to words.size).foldLeft(words)(
    (acc, i) => acc ++ words.sliding(i).map(_.mkString)
  )

  concats contains b.toLowerCase
}

matchPattern("Hero go Pro 6", "gopro")
// res1: Boolean = true

matchPattern("Hero go Pro 6", "gopro6")
// res2: Boolean = true

matchPattern("Vegan protein powder", "vega")
// res3: Boolean = false

关于regex - 如何将一个字符串与另一个之间有空格的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082967/

相关文章:

xml - Scala 集合类型之间的隐式转换

syntax - java代码中的Scala : $colon

java - Java 新手,想知道 Scanner 读取的 if 语句和字符串

sql - 比较 SQL 中长度不等的字符串

c++ - 用> =比较字符串是什么意思

javascript - 在新行上拆分,除非在双引号内

objective-c - Objective-C/iOS : Look through a document for any one of several thousand words?

scala - 提取 Scala 项目的完整调用图(困难的一个)

php - unicode 模式下的 preg_split : delim_capture not working?

c# - 正则表达式匹配挂起我的程序