英文:
GoLang: Check if item from Slice 1 contains in Slice 2. If it does, remove Slice 2
问题
我有一个字符串数组:slice1 [][]string。
我使用for循环获取我想要的值:
for _, i := range slice1 { //[string1 string2]
fmt.Println("server: ", i[1]) //只想要数组中的第二个字符串。
}
现在我有另一个字符串数组:slice2 [][]string
我也使用for循环获取它的值:
for _, value := range output { //
fmt.Println(value) //输出:[ 200K, 2, "a", 22, aa-d-2, sd , MatchingString, a ]
}
我想遍历slice1,并检查string2是否与slice2中的"MatchingString"匹配。如果匹配,就不打印该值数组。
我再次创建了一个for循环来实现这个目的,但它不起作用:
for _, value := range slice2 {
for _, i := range slice1 {
if strings.Contains(value[0], i[1]) {
//跳过
} else {
fmt.Println(value)
}
}
}
这是一个示例代码:https://play.golang.org/p/KMVzB2jlbG
有什么办法可以实现这个?谢谢!
英文:
I have a string array: slice1 [][]string.
I get the values I want using a for loop:
for _, i := range slice1 { //[string1 string2]
fmt.Println("server: ", i[1]) //only want the second string in the array.
}
Now I have another string array: slice2 [][]string
I get its values using a for loop as well:
for _, value := range output { //
fmt.Println(value) //Prints: [ 200K, 2, "a", 22, aa-d-2, sd , MatchingString, a ]
}
I want to iterate through slice1 and check if the string2 matches "MatchingString" in Slice2. If it does, don't print the value array.
I created a for loop again to do this but its not working:
for _, value := range slice2 {
for _, i := range slice1 {
if strings.Contains(value[0], i[1]) {
//skip over
} else {
fmt.Println(value)
}
}
}
Here's a sample code: https://play.golang.org/p/KMVzB2jlbG
Any idea on how to do this? Thanks!
答案1
得分: 1
如果我正确理解你的问题,你想要打印出所有满足以下条件的slice2
的子切片:其中的字符串都不是slice1
中某个切片的第二个元素。如果是这样,你可以通过以下代码实现:
Slice2Loop:
for _, value := range slice2 {
for _, slice2string := range value {
for _, i := range slice1 {
if slice2string == i[1] {
continue Slice2Loop
}
}
}
fmt.Println(value)
}
这段代码使用了三层嵌套的循环。首先,外层的循环遍历slice2
中的每个子切片。然后,内层的两个循环分别遍历当前子切片中的每个字符串和slice1
中的每个切片。如果发现当前字符串是某个切片的第二个元素,就通过continue Slice2Loop
语句跳过当前子切片的处理。如果没有找到匹配的情况,就打印出当前子切片。
英文:
If I'm reading your question correctly, you are trying to print all those subslices of slice2
that have the property that none of the strings within are the second element of a slice in slice1
. If so, you can obtain that through
Slice2Loop:
for _, value := range slice2 {
for _, slice2string := range value {
for _, i := range slice1 {
if slice2string == i[1] {
continue Slice2Loop
}
}
}
fmt.Println(value)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论