Scala如何创建文件到数组

时间:2018-04-04 17:21:24

标签: scala

我有一个如下文件,

AB*xyz*1234~
CD*mny*769~
MN*bvd*2345~
AB*zar*987~

这里我想使用(*)拆分数据,行总是以〜。

结束

val bufferedSource = Source.fromFile(sample.txt)
    var array = Array[String]()
    for (line <- bufferedSource.getLines()) {
      array = line.split("\\~")
      val splittedRow=array.split("\\*")

      }

我想要输出如下所示,应该是所有内衬的第一个单词,

阵列(AB,CD,MN,AB)。

3 个答案:

答案 0 :(得分:1)

你可以简单地做

android {
    compileSdkVersion build_versions.compile_sdk
    buildToolsVersion build_versions.build_tools

    defaultConfig {
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    publishNonDefault true
    productFlavors {
        no_meridian {}
        meridian {}
    }

    buildTypes {
        release {
            //minifyEnabled false
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile deps.support.app_compat

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    no_meridianCompile project(':vncore')

    meridianCompile project(':vncore')
    meridianCompile project(':third:Sas-Android')

    //Localytics
    meridianCompile deps.support.compat_v26
    meridianCompile deps.play.ads
    meridianCompile deps.play.location
    meridianCompile deps.localytics
    ///////////////////

    meridianCompile 'com.arubanetworks.meridian:meridian:+@aar'

}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您也可以使用collect来获得您想要的内容

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