如何使用地图将具有全名的列表转换为 (name,surname) 的元组

squ*_*all 0 functional-programming scala

我在将 List(Name Surname, Name Surname, ....) 列表转换为 List((name, surname), (name,surname)) 时遇到问题。我试过使用map,case但它说它找不到值“+”

val lines = io.Source.fromResource("nazwiska.txt").getLines.toList
    println(lines)
    val linesMapped = lines.map{case x+" "+y => (x,y) }
Run Code Online (Sandbox Code Playgroud)

Mar*_*lic 5

你快到了,但尝试使用内插字符串模式

lines.map { case s"$firstname $surname" => (firstname, surname) }
Run Code Online (Sandbox Code Playgroud)

还考虑切换到collect过滤掉格式错误的名称,否则上面的映射会爆炸

lines.collect { case s"$firstname $surname" => (firstname, surname) }
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于有多个名字和姓氏的人来说,它会失败,至少在拉丁美洲像我一样常见:p,所以你可能想使用 **Regex** 来代替 - 但是,对于一个简单的学术练习来说,这可能是杀伤力太大了​​。 (4认同)