方法:
Strings包提供了常用和方法。
Compare: 比较字符串
Contains: 是否包含子字符串
Count: 子字符串出现次数
EqualFold: 不区分大小写比较
HasPrefix: 是否有前缀
HasSuffix: 是否有尾缀
Index: 获取子字符的Index
Fields: 按空白字符分割字符串
Split: 指定分割符分割
Join: 字符串合并
LastIndex: 获取子字符在字符串中的最后一个索引
fmt.Println(strings.Compare("abc", "acb")) // -1
fmt.Println(strings.Contains("abc", "ab")) // true
fmt.Println(strings.ContainsAny("abc", "ac")) // true
fmt.Println(strings.Count("abca", "a")) // 2
fmt.Println(strings.Fields("abc def ghi")) // [abc def ghi]
fmt.Println(strings.HasPrefix("abc", "ab")) // true
fmt.Println(strings.HasSuffix("abc", "ac")) // false
fmt.Println(strings.Index("abc", "b")) // 1
fmt.Println(strings.LastIndex("abcab", "a")) // 3
fmt.Println(strings.Split("hello;my;name;is;tom", ";")) // [hello my name is tom]
fmt.Println(strings.Join([]string{"hello", "my", "name", "is", "tom"}, "_")) // hello_my_name_is_tom
fmt.Println(strings.Repeat("abc", 3)) // abcabcabc
fmt.Println(strings.Replace("abcdefabcabc", "ab", "xy", 2)) // xycdefxycabc, 替换前n个
fmt.Println(strings.Replace("abcdefabcabc", "ab", "xy", -1)) // xycdefxycxyc, -1替换全部, =ReplaceAll
fmt.Println(strings.ReplaceAll("abcdefabcabc", "ab", "xy")) // xycdefxycxyc
fmt.Println(strings.ToLower("abcABC")) // 转换小写
fmt.Println(strings.ToUpper("abcABC")) // 转换大写
fmt.Println(strings.Title("abcABC")) // 首字母大写
fmt.Println(strings.Trim("zzxyzabcxyzabcyxzxx", "xz")) // yzabcxyzabcy, 左右全部删减xz, 直到不是它俩为止
fmt.Println(strings.TrimLeft("zzxyzabcxyzabcyxzxx", "xz")) // yzabcxyzabcyxzxx, 仅左侧
fmt.Println(strings.TrimRight("zzxyzabcxyzabcyxzxx", "xz")) // zzxyzabcxyzabcy, 仅右侧
fmt.Println(strings.TrimSpace(" hello dkkd dkkdi ")) // hello dkkd dkkdi
fmt.Print(strings.TrimPrefix("", "")) // 去除前缀
fmt.Print(strings.TrimSuffix("", "")) // 去除尾缀
[]byte的方法和strings的方法是一样的。
长度计算:
import (
"fmt"
"unicode/utf8"
)
func main() {
s := "我爱你,中华人民共和国!"
fmt.Println(len(s)) // 36 byte的字符数
fmt.Println(utf8.RuneCountInString(s)) // 12 UTF-8的字符数
}
strconv包:
// bool: strconv.ParseBool, 解析字符串是不是bool类型
v, err := strconv.ParseBool("true")
fmt.Println(v, err) // true
s_Bool := strconv.FormatBool(true) // bool类型转换成字符串
fmt.Printf("Type: %T, Value: %v\n", s_Bool, s_Bool) // Type: string, Value: true
// int: Atoi把字符串转换为int
if v, err := strconv.Atoi("123"); err == nil {
fmt.Println(v)
} else {
fmt.Println(err)
}
// int: Itoa把Int转换为string
str1 := strconv.Itoa(123)
fmt.Println(str1) // 123
// 10进制数字转换成16进制之后再转换成字符串
i_Str := strconv.FormatInt(10, 16)
fmt.Printf("%T, %v\n", i_Str, i_Str) // string, a
// 解析16进制的字符串, 16表示16进制, 64表示int64
if v, err := strconv.ParseInt("64", 16, 64); err == nil {
fmt.Printf("%T, %v\n", v, v) // int64, 100
}
// 解析Float字符串, 64表示float64
if v, err := strconv.ParseFloat("3.14", 64); err == nil {
fmt.Printf("%T, %v\n", v, v) // float64, 3.14
}
Sprintf: 转换字符串
sd := fmt.Sprintf("%d", 12)
sf := fmt.Sprintf("%.2f", 12.3333)
fmt.Printf("sd: %T-%v; sf: %T-%v\n", sd, sd, sf, sf) // sd: string-12; sf: string-12.33
冒泡排序:Exp
func main() {
s1 := []int{5, 1, 4, 2, 3}
for j := 0; j < len(s1)-1; j++ {
fmt.Println("第", j, "轮比较...")
for i := j + 1; i < len(s1); i++ {
left := s1[j]
right := s1[i]
tmp := 0
if right <= left {
tmp = s1[j]
s1[j] = s1[i]
s1[i] = tmp
}
}
fmt.Println("第", j, "轮比较结果: ", s1)
}
}
# go run main.go
第 0 轮比较...
第 0 轮比较结果: [1 5 4 2 3]
第 1 轮比较...
第 1 轮比较结果: [1 2 5 4 3]
第 2 轮比较...
第 2 轮比较结果: [1 2 3 5 4]
第 3 轮比较...
第 3 轮比较结果: [1 2 3 4 5]
转载请注明:liutianfeng.com » 字符串 – String