2016-05-13 11 views
0

私はScalaで再生フレームワークを使用していますが、Seq[String]をサブシーケンスに分割したいと考えています。スカラでシーケンスを分割する方法

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

季節や色がカンマで区切られ、私は2つのサブシーケンスを取得するには、そのシーケンスを分割したい:私は色や季節を含むSQLクエリからSeq[String]を返す

、それはそのように見えます1つは季節と他の色と。

は、私が試してみた:

val subsequence=sequecne.split(",") 

しかし、それは動作し、そのエラーは戻りません:値の分割は、私が何を行うことができますので、Seq[String]

のメンバーではないでしょうか?

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") 
+1

この質問は私には不明である、と明らかに他の人にだけでなく、あなたが与えられた溶液で満たされていないようです。あなたはあなたが持っているものと何を得たいものを提供するべきです。例えばSeq(Seq( "spring"、 "summer")、Seq(Seq、Seq、Seq、 –

答えて

0

と仮定すると、あなたのsequenceは、1つの文字列を含む配列のようなものです。最後の配列には3色しか含まれていません。これは、あなたが順番に単一の要素に基づいており、あなたがいない場合を処理するための方法を提供したいように見える何を与える必要があります

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

私はそれを試していますが、私が 'println(split)'を書いたときに書く: リスト:(spring; summer) ;秋;冬;赤;緑;青) そして私はそれを別々に使うことを欲しがります –

+0

ああ、2つの要素を持つ '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項目の配列の反復子を提供します。

+0

私はそれを試していますが、私がそれを印刷したいときには: 空のイテレータ –

0

、イテレータの内容を表示するには

SQLクエリの文字列結果に期待されるデータがある。必要な場合は、文字列トリミングを行う必要があります。 lloydmetaに加えて

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

sequence.flatMap(_.split(",")).map(_.split(";")) 
関連する問題