Странно е, че "s" не работи, като кода по-долу:
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|
+---+----+
+---+----+
Отговори:
0 за отговор № 1Като Описан е LanguageManual UDF, rlike
трябва двойно избяга модел \s
.
Докато е в искровата обвивка, Скала е избягала веднъж. Така повече е необходимо:
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|
+---+-----+
Или използвайте низове без избягване, като:
scala> val er = """name rlike "\s""""
er: String = name rlike "\s"
scala> df.toDF("id", "name").as[Item].filter(er).show()
+---+----+
| id|name|
+---+----+
| 2| |
+---+----+