【发布时间】:2018-11-29 04:23:44
【问题描述】:
我从一个进程接收到一条消息,我正在尝试将它映射到一个案例类。该消息位于用逗号分隔的管道符号中,如下所示
|id1,5,2010-06-19,27.40,2010-06-20,35.40,2010-06-21,8.50,2010-06-22,23.40,2010-06-23,57.40,TX5|
消息是这样打包的
1.id
2.number of occurrences of 3 and 4 together
3.date //it repeats along with 4 based on 2
4.amount //it repeats along with 3 based on 2
5.code -- last field
虽然高层有5个字段,但3和4可以在2的基础上重复。
为了更好地理解,这里有更多示例
|id2,7,2010-06-19,56.40,2010-06-20,23.76,2010-06-21,12.50,2010-06-22,87.12,2010-06-23,52.90,2010-06-24,35.70,2010-06-25,72.80,TX3|
|id3,4,2010-06-19,87.40,2010-06-20,32.40,2010-06-21,21.50,2010-06-22,73.40,TX2|
|id4,6,2010-06-19,56.12,2010-06-20,66.43,2010-06-21,23.12,2010-06-22,87.12,2010-06-23,34.90,2010-06-24,55.00,FT3|
我能够从开头和结尾删除管道符号。解析并获取第一个和最后一个字段。
scala> val str="id1,5,2010-06-19,27.40,2010-06-20,35.40,2010-06-21,8.50,2010-06-22,23.40,2010-06-23,57.40,TX5"
str: String = id1,5,2010-06-19,27.40,2010-06-20,35.40,2010-06-21,8.50,2010-06-22,23.40,2010-06-23,57.40,TX5
scala> val (id,code) = (str.split(",")(0), str.split(",").last)
id: String = id1
code: String = TX5
scala>
但是我如何将其余部分映射到一个案例类中呢?
请注意,这与Scala: Parsing Array of String to a case class 不同,Scala: Parsing Array of String to a case class 的消息具有固定的列数,并且可以轻松映射到案例类
【问题讨论】:
-
此问题与stackoverflow.com/questions/53516233/….. 不同,因为数组是线性的且大小固定
标签: scala