Scala:长度为k的所有子串

Scala: all substrings of length k

我是 scala 的新手,我无法理解如何使用 map()foreach() 等函数对字符串执行操作。

特别是,我试图从一个字符串(称为 k-shingles)中提取所有长度为 k 的唯一连续子字符串。我的函数 kshingles(s: String, k: Int) 调用字符串 "abcdab" 应该 return Set("ab", "bc", "cd", "da").

我怎样才能在 scala 中实现它?一个好处是可以并行化(例如使用 Spark)

sliding 是您正在寻找的方法。来自 sliding 文档:

Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in grouped.) The "sliding window" step is set to one.

例如 "abcdab".sliding(2).toSet 将提供您要查找的结果。

在 Scala 2.13 中 String.sliding 已弃用。 Scala 2.13 的正确解决方案是:

"abcdab".toSeq.sliding(2).map(_.unwrap).toSet