猿问

Go Language:一种标记字符串的方法

我有一个 Go 程序,我需要在其中搜索特定模式的多个字符串。字符串看起来像这样:

 Destination: 149.164.31.169 (149.164.31.169)

我只想提取 IP 149.164.31.169,无论是中间的还是括号中的,它们总是相同的。在 Java 中,我会使用字符串标记器来收集我需要的字符串部分,但我没有在 go 中找到类似的函数。

有谁知道我如何实现这一目标?


不负相思意
浏览 192回答 2
2回答

杨__羊羊

您可以只拆分空格并取中间的一个: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,但同样,这太过分了。

墨色风雨

您也可以fmt.Sscanf为此使用:package mainimport "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
随时随地看视频慕课网APP

相关分类

Go
我要回答