Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 获取存储在Scala数组中某些特定索引中的值_Arrays_Scala - Fatal编程技术网

Arrays 获取存储在Scala数组中某些特定索引中的值

Arrays 获取存储在Scala数组中某些特定索引中的值,arrays,scala,Arrays,Scala,我有一个字符串数组,假设我想从数组中获取第三、第七和第十一个成员,并对这些数组应用一些函数 我知道我可以像使用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

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

我知道我可以像使用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))
def进程(lin1:String):String=
{
val行:数组[String]=lin1.split(“;”)
var iLength=线长度
var iTotalColumns=28
变量i=0
变量输出:String=“”
对于(i试试这个:

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)

如何使选择性函数返回修改后的字符串。我感到困惑,因为选择性函数中的映射正在处理拆分的字符串。您是否在询问如何将结果数组[string]作为单个字符串返回?如果是,只需对结果使用
mkString
(例如,
…map{…}.mkString(;”)
)。问题是我可以执行mkString,但在调用时无法获取此值。抱歉,我是Scala的初学者。我是这样调用它的\n Scala.io.Source.fromFile(inputPath+fileName).getLines()map(l=>selective(func,List(1,2,3,26))(l))很抱歉,我不确定我是否理解此问题。如果希望
选择性
返回
字符串而不是
数组[String]
,请使用tack
.mkString(;)
在地图的末尾,在
选择性的
中。如果您想按照最新的注释在地图的各行上执行此操作,请将其固定在函数调用的末尾:
…(l).mkString(;)
。如果这两种情况都不符合您的问题,也许可以将其分解为一个单独的问题?基本上,我只想打印scala.io.Source.fromFile(inputPath+fileName).getLines()map(l=>selective(func,List(1,2,3,26))(l))后面的行