为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
不负相思意 2021-11-08 18:20:01
我有一个 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,但同样,这太过分了。


查看完整回答
反对 回复 2021-11-08
?
墨色风雨

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


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信