2016-05-13 26 views
0

我在Scala中使用了play framework,我想將Seq[String]分割成子序列。如何在scala中分割序列

我從一個SQL查詢包含顏色和季節返回Seq[String],它看起來像:

spring; summer; autumn; winter, red; green; blu

的季節和顏色都用逗號分隔,我想拆分序列得到2個子,一個是季節,另一個是顏色。

我已經試過:

val subsequence=sequecne.split(",") 

但它不工作,並返回該錯誤:價值分裂不是Seq[String]

所以成員,我該怎麼辦?

+1

這個問題我不清楚,顯然給他人,以及你似乎不滿意給出的解決方案。你應該提供你有什麼和你想得到什麼。例如:給出一個seq val的seq:seq [string] = seq(「spring; summer; autumn; winter; red,green; blu」)''你想要'Seq(Seq(「spring」,「summer」 ,「秋天」,「冬天」),Seq(「紅色」,「綠色」,「藍色」)' –

回答

0

假設你sequence是像包含一個字符串的序列:

val sequence = Seq("spring; summer; autumn; winter, red; green; blu") 
val split = sequence.flatMap(_.split(",")) 
// => split: Seq[String] = List(spring; summer; autumn; winter, " red; green; blu") 
+0

我嘗試了,但是當我做'println(split)'時,它會寫: 列表:(春天;夏天;秋天;冬天,紅色;綠色;藍色) 和我我想要2個子序列分開使用它 –

+0

啊,所以你想要一個有兩個元素的Seq [Seq [String]]'然後,而不是'flatMap' ,使用'.map'代替 – lloydmeta

0

嘗試分組,

val xs = Seq("spring; summer; autumn; winter, red; green; blu") 
val groups = xs.head.split(",|;").map(_.trim).grouped(4) 

這提供高達4項陣列的迭代器。最後一個數組只包含3個顏色。

要看到迭代器中的內容,

groups.toArray 
Array(Array(spring, summer, autumn, winter), 
     Array(red, green, blu)) 
+0

我嘗試過,但是當我想打印它時,我有: 空的迭代器 –

0

這應該給你你彷彿基於序列中的單個元件上想,給你一個方法來處理,你沒有的情況下SQL查詢中的字符串結果中包含預期的數據。如果這是需求,你可能需要做一些字符串修整。

val xs = Seq("spring; summer; autumn; winter, red; green; blu") 

val ys = xs.head.split(",") match { 
    case Array(seasons, colours) => Array(seasons.split(";"), colours.split(";")) 
    case _ => ??? // unexpected case - handle appropriately 
} 

println(ys.toList.map(_.toList)) 

// List(List(spring, summer, autumn, winter), List(red, green, blu)) 
0

除了lloydmeta:

sequence.flatMap(_.split(",")).map(_.split(";"))