Как хранить слова в каждой строке файла в списке scala

Я пытаюсь прочитать файл построчно и сохранить все слова в каждой строке в списке, а затем выполнить некоторые вычисления на нем.

Я делаю следующее:

for(line <- Source.fromFile("file1.txt").getLines())
 {
   var words_in_line = line.split("\\s+")
   println(words_in_line)
}

Но это печатает что-то вроде:

[Ljava.lang.String;@3535a92b
[Ljava.lang.String;@55f56157

Что это? Почему он не печатает слова в каждой строке списка?

РЕДАКТИРОВАТЬ:

Я делаю это сейчас:

val w2 = """([A-Za-z])+""".r
 for(line <- Source.fromFile("/Users/Martha/Desktop/file1.txt").getLines.flatMap(w2.findAllIn))
 {
   println("this is")
   println(line)

   var w1 = line.split("\\s+")
   //var w2 = w1.deep.mkString(" ")
   var w3 = line.split("\\s").toList
   println(w3)

 }

чтобы получить только слова, а не цифры или знаки препинания. Но это дает мне только отдельные слова в списках в качестве вывода, а не список слов в строке. Почему это так?

3 ответа

var words_in_line = line.split("\\s+")

//words_in_line is an Array

ты не можешь печатать Array от println(words_in_line)

пытаться

scala> var line="hey hello this is demo"
line: String = hey hello this is demo

scala> var words=line.split("\\s+")
words: Array[String] = Array(hey, hello, this, is, demo)

scala> words map println
hey
hello
this
is
demo
res8: Array[Unit] = Array((), (), (), (), ())

ты хочешь List(hey, hello, this, is, demo) как тогда

scala> var words=line.split("\\s+").toList
words: List[String] = List(hey, hello, this, is, demo)

scala> println(words)
List(hey, hello, this, is, demo)

Когда вы делаете getLines и flatMap, результатом является один список отдельных слов. Если вам нужен список слов в строке, вам нужно разделить эти 2 вызова:

for( line  <- io.Source.fromFile("all.txt").getLines ) {
   val words = w2.findAllIn(line)
   println("this is")
   println(words.mkString(" "))
 }
var w3 = line.split("\\s")
w3.foreach(m -> println(m))
Другие вопросы по тегам