使用一对一映射连接Scala中的两个字符串

使用一对一映射连接Scala中的两个字符串,scala,Scala,我在Scala中有两个字符串 输入1:“a、c、e、g、i、k” 输入2:“b、d、f、h、j、l” 如何在Scala中连接这两个字符串 所需输出=“ab、cd、ef、gh、ij、kl” 我试过这样的方法: var columnNameSetOne:Array[String] = Array(); //v1 = "a,c,e,g,i,k" var columnNameSetTwo:Array[String] = Array(); //v2 = "b,d,f,h,j,l" 在我得到上

我在Scala中有两个字符串

输入1:“a、c、e、g、i、k”

输入2:“b、d、f、h、j、l”

如何在Scala中连接这两个字符串

所需输出=“ab、cd、ef、gh、ij、kl”

我试过这样的方法:

var columnNameSetOne:Array[String] = Array();    //v1 = "a,c,e,g,i,k"
var columnNameSetTwo:Array[String] = Array();    //v2 = "b,d,f,h,j,l"
在我得到上面提到的输入数据之后

columnNameSetOne = v1.split(",")
columnNameSetTwo = v2.split(",");

val newColumnSet = IntStream.range(0, Math.min(columnNameSetOne.length, columnNameSetTwo.length)).mapToObj(j => (columnNameSetOne(j) + columnNameSetTwo(j))).collect(Collectors.joining(","));

println(newColumnSet)
但是我在j上犯了错误


而且,我不确定这是否有效

使用列表上的zip函数很容易做到

val v1 = "a,c,e,g,i,k"
val v2 = "b,d,f,h,j,l"

val list1 = v1.split(",").toList
val list2 = v2.split(",").toList

list1.zip(list2).mkString(",") // res0: String = (a,b),( c,d),( e,f),( g,h),( i,j),( k,l)

使用列表上的zip函数很容易做到

val v1 = "a,c,e,g,i,k"
val v2 = "b,d,f,h,j,l"

val list1 = v1.split(",").toList
val list2 = v2.split(",").toList

list1.zip(list2).mkString(",") // res0: String = (a,b),( c,d),( e,f),( g,h),( i,j),( k,l)


zip有什么问题?你犯了什么错误?这将有助于社区更好地解决你的问题。@RamanMishra,你没听懂吗exactly@DylanKnowles’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’?这将有助于社区更好地解决你的问题。@RamanMishra,你没听懂吗exactly@DylanKnowles:它只给出了j:我还需要检查:1)如果input1或input2包含带有空格或连字符的元素,则将其替换为$(美元)2)如果input1或input2以数字开头,则在数字之前附加$(美元)。不使用for或while循环,我的意思是使用.map和.filter等,在scala中是否可以做到这一点?@Nick在其他人已经回答了之后,您正在更改您的问题。不要那样做。如果你还需要什么,再问另一个问题。@TimBiegeleisen:好的,很抱歉!我会删除我的评论。请告知。
案例c
永远不会发生。应该使用
zipAll()
来覆盖不同长度的输入。@jwvh是的,它不能。你是对的。我会更新它,谢谢你指出。我还需要检查:1)如果input1或input2包含带空格或连字符的元素,则将其替换为$(美元)2)如果input1或input2以数字开头,则在数字之前附加$(美元)。不使用for或while循环,我的意思是使用.map和.filter等,在scala中是否可以做到这一点?@Nick在其他人已经回答了之后,您正在更改您的问题。不要那样做。如果你还需要什么,再问另一个问题。@TimBiegeleisen:好的,很抱歉!我会删除我的评论。请告知。
案例c
永远不会发生。应该使用
zipAll()
来覆盖不同长度的输入。@jwvh是的,它不能。你是对的。我会更新它,谢谢你指出。不清楚OP是否想要列表而不是字符串,但是+1。需要添加mkString来获得字符串。更新了答案。不清楚OP是否需要列表而不是字符串,但是+1。需要添加mkString以获取字符串。更新了答案。