Je to zvláštne, že „s“ nefunguje, ako je uvedený nižšie:
scala> case class Item(id: Int, name:String)
defined class Item
scala> val df = Seq((1, "hello"), (2, " "))
df: Seq[(Int, String)] = List((1,hello), (2," "))
scala> df.toDF("id", "name").as[Item].filter("name rlike "\s"").show()
+---+----+
| id|name|
+---+----+
+---+----+
odpovede:
0 pre odpoveď č. 1ako LanguageManual UDF popísané, rlike
potrebujú dvojitý uniknutý vzor \s
.
Zatiaľ čo v iskrovom škrupine, Scala raz unikla. Takže viac je potrebné:
scala> df.toDF("id", "name").as[Item].filter("name rlike "\\s"").show()
+---+----+
| id|name|
+---+----+
| 2| |
+---+----+
scala> df.toDF("id", "name").as[Item].filter("name rlike "\\w"").show()
+---+-----+
| id| name|
+---+-----+
| 1|hello|
+---+-----+
Alebo použite reťazce bez úniku, ako napríklad:
scala> val er = """name rlike "\s""""
er: String = name rlike "\s"
scala> df.toDF("id", "name").as[Item].filter(er).show()
+---+----+
| id|name|
+---+----+
| 2| |
+---+----+