根据条件并置两个缩放大小的列表

问题描述 投票:0回答:1

我是scala的新手,并尝试根据条件将两个大小不同的列表连接起来,以下是列表,

val check1:String = "NULL||BLANK||LENGTH"
val check2:String = "LENGTH||DUPLICATE"
val check3:String = "NUMERIC"
val checkLists = List(check1,check2,check3)

checkLists: List[String] = List(NULL||BLANK||LENGTH, LENGTH||DUPLICATE, NUMERIC)

val condList = List(">=2","<7")

我正在尝试根据条件并置checkLists和condList并创建新列表,每当List包含字符串“ LENGTH”时,它都应与condList合并,如下所示

List(NULL||BLANK||LENGTH~>=2, LENGTH~<7||DUPLICATE, NUMERIC)

我可以使用zip,foreach和case来连接两个相等大小的列表,但在这里我遇到了使用不同大小列表的麻烦。

list scala foreach collections
1个回答
0
投票

使用zipAll将给出您要寻找的答案:

checkLists.zipAll(condList, "", "").map {
  case (check, cond) => check.replaceAll("LENGTH", "LENGTH~" + cond)
}

List(NULL||BLANK||LENGTH~>=2, LENGTH~<7||DUPLICATE, NUMERIC)

condList的缺失元素被指定为"",但是如果需要,可以使用其他默认条件。

请注意,如果第二个LENGTH字符串位于checkLists的第三个元素中,而不是第二个元素中,则不会获得任何条件。这可能是必需的,也可能不是。

© www.soinside.com 2019 - 2024. All rights reserved.