判断是否存在某个字符或子串
- 查找子串 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 =”” ,切所有单一字符
- 举例
package mainimport ("fmt""time")func main() {want:=`[报警触发类型:%s][报警名称:%s][级别:%d级][机器ip列表:%s][表达式:%s][最大报警次数:%d次][触发时间:%s]`alarmContent:=fmt.Sprintf(want,"prometheus","登录接口qps 大于100",3,"1.1.1.1, 2.2.2.2",`sum(rate(login_qps[1m])) >100`,2,time.Unix(time.Now().Unix(),0).Format("2006-01-02 15:04:05"),)fmt.Println(alarmContent)ports:=[]int{8000,8001,8002}baseUri:="/api/v1/push"for _,p:=range ports{uri:=fmt.Sprintf("localhost:%d%s",p,baseUri)fmt.Println(uri)}}
字符串修剪
package mainimport ("fmt""strings""unicode")func main() {x:= "@@@@@abchello_mage@ "// 会去掉cutset连续的fmt.Println(strings.Trim(x,"@")) // 这个日常用到的比较多 相当于python中 strip() 方法fmt.Println(strings.TrimLeft(x,"@"))fmt.Println(strings.TrimRight(x,"@"))fmt.Println(strings.TrimSpace(x))fmt.Println(strings.TrimPrefix(x," abc"))fmt.Println(strings.TrimSuffix(x," @"))f:= func(r rune) bool{return unicode.Is(unicode.Han,r) //如果是汉字返回true}fmt.Println(strings.TrimFunc("你好啊abc",f))}
- 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”)) }
<a name="4Kf4E"></a>#### **字符串连接 join**```gopackage mainimport ("fmt""strings")func main() {baseUri:="http://localhost:8080/api/v1/query?"args:=strings.Join([]string{"name=mage","id=1","env=online"},"&")fullUri:=baseUri+argsfmt.Println(fullUri)// http://localhost:8080/api/v1/query?name=mage&id=1&env=online}
字符串拼接的优化
使用 string.builder
package mainimport ("fmt""strings")func main() {ss:=[]string{"A","B","C",}var b strings.Builderfor _,s:=range ss{b.WriteString(s)}fmt.Println(b.String())}
