判断是否存在某个字符或子串
- 查找子串 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 main
import (
"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 main
import (
"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**
```go
package main
import (
"fmt"
"strings"
)
func main() {
baseUri:="http://localhost:8080/api/v1/query?"
args:=strings.Join([]string{"name=mage","id=1","env=online"},"&")
fullUri:=baseUri+args
fmt.Println(fullUri)
// http://localhost:8080/api/v1/query?name=mage&id=1&env=online
}
字符串拼接的优化
使用 string.builder
package main
import (
"fmt"
"strings"
)
func main() {
ss:=[]string{
"A",
"B",
"C",
}
var b strings.Builder
for _,s:=range ss{
b.WriteString(s)
}
fmt.Println(b.String())
}