1

単語のリストをリストとして持っています。おそらく5から10の間の長さの単語を抽出したいのですが、次のコードを使用していますが、機能しないようです。また、私はvalのみを使用でき、varは使用できません。

val sentence = args(0)
val words = sentence.split(" ")
val fullsort = words.sortBy(w => w.length -> w)
val med = fullsort.map(x => if(x.length>3 && x.length<11) x)
4

3 に答える 3

5
val sentence = args(0)
val words = sentence.split(" ")
val results = words.filter(word => word.length >= 5 && word.length <= 10)
于 2013-01-24T03:24:10.117 に答える
1

これを試して

val sentence = args(0)
val words = sentence.split(" ")
val fullsort = words.sortBy(w => w.length -> w)

val med = fullsort collect {case x:String if (x.length >= 5 && x.length <= 10) => x}
于 2013-01-24T05:11:39.630 に答える
0

もう1つの方法は、正規表現に多くの作業を任せることです。

val wordLimitRE  = "\\b\\w{5,10}\\b".r
val wordIterator = wordLimitRE.findAllMatchIn(sentence).map {_.toString}  

この特定の正規表現は、単語境界パターン\ bで始まり、次にいくつかの単語文字の範囲限定一致\ w {lower、upper}、最後に別の単語境界パターン\ b

このメソッドは、一致ごとにをfindAllMatchIn返します(単語の境界パターンのため、一致は重複しません)。を返しIterator[Regex.Match]ますmap {_.toString}Iterator[String]

于 2013-01-24T10:09:20.483 に答える