我是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来连接两个相等大小的列表,但在这里我遇到了使用不同大小列表的麻烦。
使用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
的第三个元素中,而不是第二个元素中,则不会获得任何条件。这可能是必需的,也可能不是。