strings

判断是否存在某个字符或子串

  • 查找子串 fmt.Println(strings.Contains(“localhost:8080”,”8080”))
  • 任意字符 fmt.Println(strings.ContainsAny(“localhost 8080”,”a b”))
  • 查找rune类型 fmt.Println(strings.ContainsRune(“chain”,rune(‘c’)))

字符串分割(切分)为[]string

  • SplitAfter 保留sep
  • SplitN 结果长度为n,如果没切完就不切了,保留给最后一个
  • sep =”” ,切所有单一字符
  • 举例
  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func main() {
  7. want:=`
  8. [报警触发类型:%s]
  9. [报警名称:%s]
  10. [级别:%d级]
  11. [机器ip列表:%s]
  12. [表达式:%s]
  13. [最大报警次数:%d次]
  14. [触发时间:%s]
  15. `
  16. alarmContent:=fmt.Sprintf(
  17. want,
  18. "prometheus",
  19. "登录接口qps 大于100",
  20. 3,
  21. "1.1.1.1, 2.2.2.2",
  22. `sum(rate(login_qps[1m])) >100`,
  23. 2,
  24. time.Unix(time.Now().Unix(),0).Format("2006-01-02 15:04:05"),
  25. )
  26. fmt.Println(alarmContent)
  27. ports:=[]int{8000,8001,8002}
  28. baseUri:="/api/v1/push"
  29. for _,p:=range ports{
  30. uri:=fmt.Sprintf("localhost:%d%s",p,baseUri)
  31. fmt.Println(uri)
  32. }
  33. }

字符串修剪

  1. package main
  2. import (
  3. "fmt"
  4. "strings"
  5. "unicode"
  6. )
  7. func main() {
  8. x:= "@@@@@abchello_mage@ "
  9. // 会去掉cutset连续的
  10. fmt.Println(strings.Trim(x,"@")) // 这个日常用到的比较多 相当于python中 strip() 方法
  11. fmt.Println(strings.TrimLeft(x,"@"))
  12. fmt.Println(strings.TrimRight(x,"@"))
  13. fmt.Println(strings.TrimSpace(x))
  14. fmt.Println(strings.TrimPrefix(x," abc"))
  15. fmt.Println(strings.TrimSuffix(x," @"))
  16. f:= func(r rune) bool{
  17. return unicode.Is(unicode.Han,r) //如果是汉字返回true
  18. }
  19. fmt.Println(strings.TrimFunc("你好啊abc",f))
  20. }
  • TrimLeft会去掉连续的cutset
  • TrimPrefix会去掉的单一的 ```go package main

import ( “fmt” “strings” )

func main() { x := “@a@abchello_mage@ “ // TrimLeft会去掉连续的cutset bchello_mage@ fmt.Println(strings.TrimLeft(x, “@a”)) // TrimPrefix会去掉的单一的 @abchello_mage@ fmt.Println(strings.TrimPrefix(x, “@a”)) }

  1. <a name="4Kf4E"></a>
  2. #### **字符串连接 join**
  3. ```go
  4. package main
  5. import (
  6. "fmt"
  7. "strings"
  8. )
  9. func main() {
  10. baseUri:="http://localhost:8080/api/v1/query?"
  11. args:=strings.Join([]string{"name=mage","id=1","env=online"},"&")
  12. fullUri:=baseUri+args
  13. fmt.Println(fullUri)
  14. // http://localhost:8080/api/v1/query?name=mage&id=1&env=online
  15. }


字符串拼接的优化


使用 string.builder

  1. package main
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. func main() {
  7. ss:=[]string{
  8. "A",
  9. "B",
  10. "C",
  11. }
  12. var b strings.Builder
  13. for _,s:=range ss{
  14. b.WriteString(s)
  15. }
  16. fmt.Println(b.String())
  17. }