0

我有一个字符串数组,让我们假设我想从数组中获取第三个、第七个和第十一个成员并对这些数组应用一些函数。

我知道我可以像使用 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))
4

1 回答 1

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)
于 2013-10-08T01:33:47.260 回答