Scala如何创建文件到数组

Scala如何创建文件到数组,scala,Scala,我有一个文件如下 AB*xyz*1234~ CD*mny*769~ MN*bvd*2345~ AB*zar*987~ 在这里,我想使用(*)分割数据,并且行始终以~ 代码 val bufferedSource=Source.fromFile(sample.txt) 变量数组=数组[字符串]() 对于(line您只需 Source.fromFile(filename).getLines().map(line => line.split("\\*").head).toArray //res0

我有一个文件如下

AB*xyz*1234~
CD*mny*769~
MN*bvd*2345~
AB*zar*987~
在这里,我想使用(*)分割数据,并且行始终以~

代码

val bufferedSource=Source.fromFile(sample.txt)
变量数组=数组[字符串]()
对于(line您只需

Source.fromFile(filename).getLines().map(line => line.split("\\*").head).toArray
//res0: Array[String] = Array(AB, CD, MN, AB)
你可以简单地做

Source.fromFile(filename).getLines().map(line => line.split("\\*").head).toArray
//res0: Array[String] = Array(AB, CD, MN, AB)

通过映射文件中的行并选择要保留的字符串部分,可以更好地实现这一点:

val array = 
  Source.fromFile(sample.txt)  // Open the file
    .getLines()                // get each line
    .toArray                   // as an array
    .map(s => s.split("\\*").head)  // Then select just the first part
                                    // of the line, split by * characters

通过映射文件中的行并选择要保留的字符串部分,可以更好地实现这一点:

val array = 
  Source.fromFile(sample.txt)  // Open the file
    .getLines()                // get each line
    .toArray                   // as an array
    .map(s => s.split("\\*").head)  // Then select just the first part
                                    // of the line, split by * characters

您还可以使用
collect
获取所需内容

val s = Source.fromFile("fileName").getLines().collect{
  case e => e.split("\\*").apply(0)
}.toArray
//s: Array[String] = Array(AB, CD, MN, AB)

您还可以使用
collect
获取所需内容

val s = Source.fromFile("fileName").getLines().collect{
  case e => e.split("\\*").apply(0)
}.toArray
//s: Array[String] = Array(AB, CD, MN, AB)

谢谢你的回复。我得到的输出是[Ljava.lang.String;@a92be4f。我将数组转换为列表并得到了预期的输出。这是因为
array
s不像
list
s那样打印它们的内容。谢谢你的回复。我得到的输出是[Ljava.lang.String;@a92be4f.i将数组转换为列表并获得了预期的输出。这是因为
array
s不像
list
s那样打印其内容。