我有一个单词列表作为列表,我想提取长度可能在 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)
val sentence = args(0)
val words = sentence.split(" ")
val results = words.filter(word => word.length >= 5 && word.length <= 10)
尝试这个
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}
另一种选择是让正则表达式为您完成更多工作:
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]