我有一个 Go 程序,我需要在其中搜索特定模式的多个字符串。字符串看起来像这样: Destination: 149.164.31.169 (149.164.31.169)我只想提取 IP 149.164.31.169,无论是中间的还是括号中的,它们总是相同的。在 Java 中,我会使用字符串标记器来收集我需要的字符串部分,但我没有在 go 中找到类似的函数。有谁知道我如何实现这一目标?
2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
您可以只拆分空格并取中间的一个:
s := "Destination: 149.164.31.169 (149.164.31.169)"
parts := strings.Split(s, " ")
if len(parts) != 3 {
panic("Should have had three parts")
}
println(parts[1])
还有很多其他方法。该strings包是看的地方。当然,如果您需要更复杂的东西,您可以查看regex正则表达式,但这在这里有点过头了。如果你真的需要一个分词器,看看text/scanner,但同样,这太过分了。
墨色风雨
TA贡献1853条经验 获得超6个赞
您也可以fmt.Sscanf为此使用:
package main
import "fmt"
func extractIP(s string) string {
var ip string
fmt.Sscanf(s, "Destination: %v", &ip)
return ip
}
func main() {
ip := extractIP("Destination: 149.164.31.169 (149.164.31.169)")
fmt.Println(ip == "149.164.31.169")
}
https://golang.org/pkg/fmt#Sscanf
- 2 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消