如何在scala中模拟MySQL SUBSTRING_INDEX()?

时间:2016-08-29 11:30:56

标签: mysql scala

如何使用scala字符串函数在scala中模拟MySQL函数SUBSTRING_INDEX()?

例如 MySQL的:

SELECT SUBSTRING_INDEX('This is test number one', ' ', 3);

返回This is test

如何在scala中实现相同功能?

3 个答案:

答案 0 :(得分:0)

我没有测试过这个,但我认为它应该按预期工作;

 def substringWithIndex(str: String, splitter: String, index: Int): String = {
    str.split(splitter).zipWithIndex.foldLeft("") { (acc, i) =>
      if(i._2 == 0)
        i._1
      else if(i._2 < index)
        acc + splitter + i._1
      else
        acc
    }
  }

答案 1 :(得分:0)

我也没有得到这个。这是一个更简单的解决方案,可以按需运行。

object Main {
  def main(args: Array[String]): Unit = {
    val str = "this is a string"
    val substring = takeWords(str, ' ', 3)
    println(substring) // yields "this is a"
  }

  def takeWords(s: String, splitAt: Char, n: Int): String = {
    s.split(splitAt) take n mkString(" ") //or whatever separator you need
  }
}

答案 2 :(得分:0)

def substringIndex(str: String, n: Int, splitter: String = "\\s+"): String = 
    str split splitter take n mkString " "