strings包
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Compare("1", "2")) // 比较大小
fmt.Println(strings.Contains("abc", "bd")) //是否包含
fmt.Println(strings.Count("abcabdabd", "bd")) //计算出现次数
fmt.Printf("%q
", strings.Fields("abc abc 123
1
1")) //空白字符分割
fmt.Println(strings.HasPrefix("abcd", "ab")) //以什么开头
fmt.Println(strings.HasSuffix("abcd", "ab")) //以什么结尾
fmt.Println(strings.Join([]string{"1", "2"}, "-")) //字符串连接,可以指定连接字符
fmt.Println(strings.Repeat("*", 20)) //20个*
fmt.Println(strings.Replace("abcabcabcdabc", "abc", "x", 2)) //替换,(src, 需要替换的内容, 替换成的内容, 替换次数)
fmt.Println(strings.ReplaceAll("abcabcabcdabc", "abc", "x")) //全部替换
fmt.Printf("%q
", strings.Split("a-b--c", "-")) //以什么做分割符
fmt.Printf("%q
", strings.SplitAfter("a-b-c", "-")) //分割符也保留
fmt.Printf("%q
", strings.SplitN("a-b-c", "-", 2)) //分割限定次数
fmt.Println(strings.Title("a b bab abc")) //首字母大写
fmt.Println(strings.ToLower("A B bab abc")) //全部小写
fmt.Println(strings.ToUpper("A B bab abc")) //全部大写
fmt.Println(strings.Trim("abcbcdabcdbcabc", "abc")) //去除前后字符a,b,c
fmt.Println(strings.TrimLeft("abcbcdabcdbcabc", "abc")) //左边去掉a,b,c
fmt.Println(strings.TrimRight("abcbcdabcdbcabc", "abc")) //右边去掉a,b,c
fmt.Println(strings.TrimSpace(" abcbcdabcdbcabc
")) //去除前后空白字符
fmt.Println(strings.TrimSuffix("abcbcdabcdbcabc", "abc")) //后边的去掉abc
fmt.Println(strings.TrimPrefix("abcbcdabcdbcabc", "abc")) //前面去掉abc
}
FieldsFunc
func FieldsFunc(s string, f func(rune) bool) []string
FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c) and returns an array of slices of s. If all code points in s satisfy f(c) or the string is empty, an empty slice is returned.
FieldsFunc在每次运行Unicode代码时将字符串s分割为满足f(c)的c,并返回一个s的片数组。如果s中的所有代码点都满足f(c)或者字符串为空,则返回一个空片
func aFields(split rune) bool {
return split == 'a'
}
func main() {
fmt.Printf("%q
", strings.FieldsFunc("aaabsad", aFields)) //["bs" "d"]
}
unicode/utf8包
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
var name string = "qq"
var desc string = "i love china"
var txt = "我爱中国"
fmt.Println(utf8.RuneCountInString(txt)) //中文字符数量
fmt.Println(utf8.RuneCountInString(desc)) //unicode数量
// 字符串 => []byte
fmt.Println([]byte(desc)) //转化成byte切片
fmt.Println(string([]byte(desc))) //转化成字符串
fmt.Println([]byte(txt)) //转化成byte切片
fmt.Println(string([]byte(txt))) //转化成字符串
// 字符串 => []rune
fmt.Println([]rune(desc)) //转化成rune切片
fmt.Println(string([]rune(desc))) //转化成字符串
fmt.Println([]rune(txt)) //转化成rune切片
fmt.Println(string([]rune(txt))) //转化成字符串
}
strconv包
package main
import (
"fmt"
"strconv"
)
func main() {
// 字符串 <=> int
i, err := strconv.Atoi("abc")
fmt.Println(i, err) // 不是数字,会出错
i, err = strconv.Atoi("-15")
fmt.Println(i, err)
fmt.Printf("%q
", strconv.Itoa(45)) //int转化字符串
// 字符串 <=> bool
//strconv.FormatBool bool转化成字符串
fmt.Printf("%q
", strconv.FormatBool(true))
fmt.Printf("%q
", strconv.FormatBool(false))
//strconv.ParseBool 字符串转化成bool
fmt.Println(strconv.ParseBool("true"))
fmt.Println(strconv.ParseBool("false"))
fmt.Println(strconv.ParseBool("1"))
fmt.Println(strconv.ParseBool("0"))
fmt.Println(strconv.ParseBool("xxx")) //无法转化
// 字符串 <=> float
fmt.Println(strconv.FormatFloat(1.68, 'E', -1, 32)) //科学计算法,-1表示精度
fmt.Println(strconv.FormatFloat(1.68, 'f', -1, 32)) //十进制
fmt.Println(strconv.ParseFloat("1.34", 32)) //32位
fmt.Println(strconv.ParseFloat("1.34", 64)) //64位
}