我是scala的新手,不要因为我的问题而生我的生气,请帮我看看解析如何解释我的例子:
我想解析这样的字符串:
Integer
所以基本上我希望用IPAdress
拆分它们,然后将第一个解析为class IPAddress(val cartage1 : Integer, cartage2 : Integer, cartage3: Integer, cartage4 : Integer) {
}
,将第二个解析为@IBOutlets
到这样的结构:
findViewById
你能帮我做一下吗?
答案 0 :(得分:1)
我认为“案例解析”是指extractor的regex class?嗯,一个简单的变体如下:
scala> val pattern = """(\d+)\s+(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})""".r
pattern: scala.util.matching.Regex = (\d+)\s+(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
scala> val pattern(d, i1, i2, i3, i4) = "6546263252026003359 192.168.1.1"
d: String = 6546263252026003359
i1: String = 192
i2: String = 168
i3: String = 1
i4: String = 1
如果你想确保有效的IP,那么正如我们可能会使用正则表达式。
下面发生的事情是pattern
定义了unapply
String => Option[(Int, Int, Int, Int, Int)]
类型的方法,所以类似
"6546263252026003359 192.168.1.1" match {
case pattern(d, i1, i2, i3, i4) => IPAddress(i1, i2, i3, i4)
}
得到(反对)翻译成这个:
pattern.unapply("6546263252026003359 192.168.1.1") match {
case Some((d, i1, i2, i3, i4)) => IPAddress(i1, i2, i3, i4)
case None => /* throw some error */
}