• go介绍32——字符串操作


    字符串操作

    1. package main
    2. import (
    3. "fmt"
    4. "regexp"
    5. )
    6. func main() {
    7. buf := `
    8. Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国
    9. 测试1
    10. 测试2
    11. 你好
    12. 麦克
  • 测试3
  • 测试4
  • </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">
  • `
  • //1. 解析正则表达式
  • //reg := regexp.MustCompile(`
    (.*)
    `) //+表示前一个字符1次或多次
  • reg := regexp.MustCompile(`
    (?s:(.*?))
    `
    )
  • if reg == nil {
  • fmt.Println("reg = ", reg)
  • return
  • }
  • //2. 提取关键信息
  • s := reg.FindAllStringSubmatch(buf, -1) //-1表示匹配所有
  • fmt.Println("s = ", s)
  • //3. 过滤
  • for _, data := range s {
  • //fmt.Println("data[0] = ", data[0]) //带标签
  • fmt.Println("data[1] = ", data[1]) //不带标签
  • }
  • }
  • 字符串转换

    1. package main
    2. import (
    3. "fmt"
    4. "strconv"
    5. )
    6. func main() {
    7. //1. 字符串追加
    8. //转换位字符串后追加到字节数组
    9. slice := make([]byte, 0, 1024)
    10. slice = strconv.AppendBool(slice, true)
    11. //第二个数为要追加的数,第三个数指定十进制方式追加
    12. slice = strconv.AppendInt(slice, 1234, 10)
    13. slice = strconv.AppendQuote(slice, "go")
    14. fmt.Println("slice = ", string(slice))
    15. //bool转换为字符串
    16. var str string
    17. str = strconv.FormatBool(false)
    18. //float转换为字符串
    19. str = strconv.FormatFloat(3.1415, 'f', -1, 64)
    20. //整型转字符串
    21. str = strconv.Itoa(1234)
    22. fmt.Println("str = ", str)
    23. //字符串转其他类型
    24. flag, err := strconv.ParseBool("true")
    25. if err == nil {
    26. fmt.Println("flag = ", flag)
    27. } else {
    28. fmt.Println("err = ", err)
    29. }
    30. //字符串转换为整型
    31. a, err := strconv.Atoi("123")
    32. if err == nil {
    33. fmt.Println("a = ", a)
    34. } else {
    35. fmt.Println("err = ", err)
    36. }
    37. }

    正则表达式1

    1. package main
    2. import (
    3. "fmt"
    4. "regexp"
    5. )
    6. func main() {
    7. buf := "abc azc a2c qwe 888 ip9 bn5"
    8. //1.解析规则:会解析正则表达式 如果成功返回解析器
    9. //reg := regexp.MustCompile(`a.c`) //a开头 中间任意字符 c结尾
    10. //reg := regexp.MustCompile(`a[0-9]c`)
    11. reg := regexp.MustCompile(`a\dc`)
    12. if reg == nil {
    13. fmt.Println("reg = ", reg)
    14. return
    15. }
    16. //2.根绝规则提取关键信息
    17. s := reg.FindAllStringSubmatch(buf, -1) //-1表示匹配所有
    18. fmt.Println("s = ", s)
    19. }

    正则表达式2

    1. package main
    2. import (
    3. "fmt"
    4. "regexp"
    5. )
    6. func main() {
    7. buf := "2.13 12.12 2 1.2 5.6 12 acb"
    8. //1. 解析正则表达式
    9. reg := regexp.MustCompile(`\d+\.\d+`) //+表示前一个字符1次或多次
    10. if reg == nil {
    11. fmt.Println("reg = ", reg)
    12. return
    13. }
    14. //2. 提取关键信息
    15. s := reg.FindAllStringSubmatch(buf, -1) //-1表示匹配所有
    16. fmt.Println("s = ", s)
    17. }

    正则表达式3

    1. package main
    2. import (
    3. "fmt"
    4. "regexp"
    5. )
    6. func main() {
    7. buf := `
    8. Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国
    9. 测试1
    10. 测试2
    11. 你好
    12. 麦克
  • 测试3
  • 测试4
  • </span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">
  • `
  • //1. 解析正则表达式
  • //reg := regexp.MustCompile(`
    (.*)
    `) //+表示前一个字符1次或多次
  • reg := regexp.MustCompile(`
    (?s:(.*?))
    `
    )
  • if reg == nil {
  • fmt.Println("reg = ", reg)
  • return
  • }
  • //2. 提取关键信息
  • s := reg.FindAllStringSubmatch(buf, -1) //-1表示匹配所有
  • fmt.Println("s = ", s)
  • //3. 过滤
  • for _, data := range s {
  • //fmt.Println("data[0] = ", data[0]) //带标签
  • fmt.Println("data[1] = ", data[1]) //不带标签
  • }
  • }
  • 相关阅读:
    【OpenCV • c++】图像噪音 | 椒盐噪音 | 高斯噪音
    rabbitmq跟着b站尚硅谷老师学习
    STM8S系列基于STVD开发,自定义printf函数+TIM5精确延时函数模块化工程示例
    【Docker】深入理解Docker:一种革新性的容器技术
    docker容器启动成功外部访问不到
    【若依(ruoyi)】ztree初始化
    jenkins搭建
    民安智库(第三方市场调查公司)北京汽车神秘顾客调查
    _linux 进程间通信(管道)
    LayaBox---TypeScript---类
  • 原文地址:https://blog.csdn.net/www_dong/article/details/127894023