2013-01-24 3 views
1

나는 목록의 단어 목록을 가지고 있는데, 길이가 5에서 10 사이 인 단어를 추출하고 싶습니다. 다음 코드를 사용하고 있지만 작동하지 않는 것 같습니다. 또한 나는 var 만 사용할 수 있고 var는 사용할 수 없습니다. 이 특정 정규식 단어 경계 패턴으로 시작조건에 따라 목록에서 스칼라 추출물

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

:

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) 

답변

5
val sentence = args(0) 
val words = sentence.split(" ") 
val results = words.filter(word => word.length >= 5 && word.length <= 10) 
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} 
0

또 다른 대안은 정규식 당신을 위해 작품의 더 많은 일을 할 수 있도록하는 것입니다 시도 \ b 범위 제한 일치 단어 문자의 라 번호 w \ {상하} 다음 마지막으로 다른 단어 경계 패턴 \ B 각 경기에 대한 Iterator[Regex.Match]를 반환 findAllMatchIn 방법은 (경기 때문에의 중복되지 않는

단어 경계 패턴). map {_.toString}Iterator[String]

을 반환합니다.