我有一个String数组,让我们假设我想从数组中获取第三,第七和第十一个成员并将一些函数应用于这些数组。
我知道我可以像使用if语句一样使用java方式,但我想用scala方式做到这一点
作为问题的补充,让我们假设原始字符串有多个由逗号分隔的单词。我想将一些提到的应用到第三,第七和第十一个成员,而其余的字符串保持不变。
换句话说,如果输入字符串是
i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11
我想将其更改为
i1,i2,f(i3),i4,i5,i6,f(i7),i8,i9,i10,f(i11)
目前,我这样做
def process(lin1:String):String=
{
val line:Array[String]=lin1.split(";")
var iLength=line.length
var iTotalColumns=28
var i=0
var output:String=""
for( i<-0 to iLength-1){
var sTemp=line(i)
if((i==3)||(i==7)||(i==11))
答案 0 :(得分:1)
试试这个:
def selective(f: String => String, ixs: Seq[Int])(in: String) =
in.split(";").zipWithIndex
.map {
case (str, ix) if (ixs.contains(ix)) => f(str)
case other => other._1
}
示例电话:
scala> val input = "entry1;entry2;entry3;entry4;entry5;entry6;entry7;entry8;entry9;entry10;entry11"
input: String = entry1;entry2;entry3;entry4;entry5;entry6;entry7;entry8;entry9;entry10;entry11
scala> selective(_.toUpperCase, List(2,6,10))(input)
res3: Array[String] = Array(entry1, entry2, ENTRY3, entry4, entry5, entry6, ENTRY7, entry8, entry9, entry10, ENTRY11)