我有一个如下文件,
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)。
答案 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)