Go 将字符串切片的输出解析为另一个字符串切片
我的意见是Go 将字符串切片的输出解析为另一个字符串切片,go,Go,我的意见是 [v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:2.44.5.76/32 ~all] 这是一种 []string 其中的元素数量是 1 我的目标是解析这个切片,以便我的输出是stringslice类型,但只包含IP,并且每个IP是切片中的一个单独元素 输出应该是 [35.190.247.0/24 64.233.160.0/19 2.44.5.76/32] 类型应该是 []string 3 元素的数量应该是 []str
[v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:2.44.5.76/32 ~all]
这是一种
[]string
其中的元素数量是
1
我的目标是解析这个切片,以便我的输出是stringslice类型,但只包含IP,并且每个IP是切片中的一个单独元素
输出应该是
[35.190.247.0/24 64.233.160.0/19 2.44.5.76/32]
类型应该是
[]string
3
元素的数量应该是
[]string
3
因此,我要做的是首先更换v=spf1 ip4:
j := strings.Replace(t.Txt[0], "v=spf1 ", "", -1)
k := strings.Replace(j, "ip4:", "", -1)
l := strings.Replace(j, "~all", "", -1)
这给了我
35.190.247.0/24 64.233.160.0/19 2.44.5.76/32
类型
string
然后我想做的是用一个空格作为分隔符遍历所有的IP,并将每个IP作为一个单独的字符串打印在新行上
for i, word := range l {
fmt.Println(word)
}
而不是
0 35.190.247.0/24
1 64.233.160.0/19
2 2.44.5.76/32
我越来越
0 51
1 53
2 46
3 49
4 57
5 48
6 46
这里有什么问题?我无法通过使用
范围l
来理解它,您正在迭代字符串的符文。在您的情况下,这些只是ip地址的ASCII码
您离解决方案不远:
j:=strings.Replace(t.Txt[0],“v=spf1”,“”,-1)
k:=字符串。替换(j,“ip4:”,“”,-1)
l:=strings.Replace(j,“~all”,”“,-1)//在字符串上进行测距会得到符文,而不是“单词”。尝试使用字符串。拆分。见此处的范围表达式表: