Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
替换Scala中的字符串变量以获得解决方案_Scala - Fatal编程技术网

替换Scala中的字符串变量以获得解决方案

替换Scala中的字符串变量以获得解决方案,scala,Scala,我有一个具有以下数据结构的变量,我想将字符串的所有“foo”替换为所有“goo”。有没有一行简洁的代码可以做到这一点?希望查看是否有任何智能解决方案可以跳过以编写循环。:) 问候,, 林我不确定我是否做对了,但也许这就是你要找的 scala> val a: List[List[(List[String], Double)]] = List(List((List("foo asd", "asd foo"), 2.6))) scala> a map (_ map { case (k, v

我有一个具有以下数据结构的变量,我想将
字符串的所有“foo”替换为所有“goo”。有没有一行简洁的代码可以做到这一点?希望查看是否有任何智能解决方案可以跳过以编写循环。:)

问候,,

我不确定我是否做对了,但也许这就是你要找的

scala> val a: List[List[(List[String], Double)]] = List(List((List("foo asd", "asd foo"), 2.6)))
scala> a map (_ map { case (k, v) => (k map (_.replaceAll("foo", "goo")), v) })
res1: List[List[(List[String], Double)]] = List(List((List(goo asd, asd goo),2.6)))
编辑 为了回答这个评论,让我先去掉空格,用点

scala> a.map(_.map { case (k, v) => (k.map(_.replaceAll("foo", "goo")), v) })
现在,将
方法(param)
扩展到
x=>x.method(param)


你有3层嵌套列表,其中一层在元组中,这并不漂亮,你需要映射每一层并从元组中提取最后一层。

我不确定我是否正确,但也许这就是你要找的

scala> val a: List[List[(List[String], Double)]] = List(List((List("foo asd", "asd foo"), 2.6)))
scala> a map (_ map { case (k, v) => (k map (_.replaceAll("foo", "goo")), v) })
res1: List[List[(List[String], Double)]] = List(List((List(goo asd, asd goo),2.6)))
scala> val l = List(List((List("foo","afoo"),3.4),(List("gfoo","cfoo"),5.6)))
l: List[List[(List[String], Double)]] = List(List((List(foo, afoo),3.4), (List(gfoo, cfoo),5.6)))

scala> def replaceFoo(y:List[String]) = y.map(s => s.replace("foo","goo"))
replaceFoo: (y: List[String])List[String]

scala> l.map(x => x.map(y => (replaceFoo(y._1),y._2)))
res0: List[List[(List[String], Double)]] = List(List((List(goo, agoo),3.4), (List(ggoo, cgoo),5.6)))
编辑 为了回答这个评论,让我先去掉空格,用点

scala> a.map(_.map { case (k, v) => (k.map(_.replaceAll("foo", "goo")), v) })
现在,将
方法(param)
扩展到
x=>x.method(param)


你有三层嵌套列表,其中一层在元组中,这并不漂亮,你需要映射每一层,并从元组中提取最后一层。

谢谢你的ukasz,投票,以及在
\ukasz
中的
\uucode>是什么意思,在
\umap
中向上投票以及什么是
\ucode>的意思?请参阅我的编辑,这只是一个更详细的匿名函数的简写。谢谢Andrzej,在尝试之前始终向上投票。:)如果您能详细解释一下这一行的意思,我将不胜感激。
l.map(x=>x.map(y=>(y._1.map(s=>s.replace(“foo”,“goo”)),y._2))
?对我来说还是有点进步。:)方法replaceFoo-将列表中的所有foo替换为goo。这个列表是元组的第一个元素(list[String],Double)。关于元组的第一个元素询问为_1,关于第二个_2,请耐心等待,将您的回答标记为答案。:)谢谢Andrzej,在尝试之前一定要投赞成票。:)如果您能详细解释一下这一行的意思,我将不胜感激。
l.map(x=>x.map(y=>(y._1.map(s=>s.replace(“foo”,“goo”)),y._2))
?对我来说还是有点进步。:)方法replaceFoo-将列表中的所有foo替换为goo。这个列表是元组的第一个元素(list[String],Double)。关于元组的第一个元素询问为_1,关于第二个_2,请耐心等待,将您的回答标记为答案。:)
scala> val l = List(List((List("foo","afoo"),3.4),(List("gfoo","cfoo"),5.6)))
l: List[List[(List[String], Double)]] = List(List((List(foo, afoo),3.4), (List(gfoo, cfoo),5.6)))

scala> def replaceFoo(y:List[String]) = y.map(s => s.replace("foo","goo"))
replaceFoo: (y: List[String])List[String]

scala> l.map(x => x.map(y => (replaceFoo(y._1),y._2)))
res0: List[List[(List[String], Double)]] = List(List((List(goo, agoo),3.4), (List(ggoo, cgoo),5.6)))