go 语言:(字符串处理) 字段提取

在go语言中怎样取出一个字符串中的数字部分, 对于规则的数据类型,例如日志等,其都有固定的格式,怎样取出某一个部分呢?
例如:
var s = "MemTotal: 1001332 kB"

我想要其中的每一个字段,怎样提取呢?

阅读 25.7k
4 个回答

不管任何语言,对于字符串或者单个的字符的处理来说,一般有两种方法,一种是直接对字符串进行处理,另一种是通过正则表达式。
在go语言中,对于上诉的字符串,可以直接对字符串进行处理函数,即通过strings包,来对字符串处理;另一种通过正则表达式的库regexp来对字符串进行处理。


  • 对于上面类型的字符串,使用字符串处理函数strings.Fields()就可以做到, 当然函数并不是只有一个,你也可以自己定义,总之函数有很多。
    例如:

func GetFields (str string) []string {
     var sub = strings.Fields(str)
     return sub 
}

这里只写出了函数,请自行测试,谢谢。

  • 使用正则的函数库,正则表达式非常的强大,在一般的情况下,上面的字符串处理就足可以需求。

试试正则表达式。

var s = "MemTotal: 1001332 kB"
var valid = regexp.MustCompile("[0-9]")
fmt.Println(valid.FindAllStringSubmatch(s, -1))

对于这个需求,正则应该是最有效的方法了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题