Golang常见的字符串函数操作实战篇
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.判断子串
package main import ( "fmt" "strings" ) func main() { s1 := "尹正杰2020" s2 := "2020" /** Contains函数的签名如下所示: func Contains(s, substr string) bool 对函数签名个参数说明如下: s: 表示一个字符串 substr: 表示需要和s进行对比的子串 bool: 表示返回值类型,如果s包含substr则返回true,如果不包含则返回false. */ result := strings.Contains(s1, s2) fmt.Printf("result = %t ", result) if result { fmt.Println("s2是s1的子串") } else { fmt.Println("s2不是s1的子串") } }
二.字符串拼接
package main import ( "fmt" "strings" ) func main() { //定义一个字符串切片 s1 := []string{ "YinZhengjie", "尹正杰", "2020", } fmt.Println(s1) /** Join的函数签名如下所示: Join(a []string, sep string) string 对函数签名个参数说明如下: a: 表示待拼接的字符串切片. sep: 表示指定拼接的链接符号,如果不想使用任何拼接符号可以使用空串("") string: 返回值就是将字符串切片(a)按照拼接符号(sep)进行拼接的一个最终结果 */ result := strings.Join(s1, "-") fmt.Println(result) }
三.字符串删除首尾字符
package main import ( "fmt" "strings" ) func main() { s1 := "2020YinZhengjie" fmt.Println(s1) s2 := "尹正杰2020" fmt.Println(s2) s3 := "尹正杰2020到此一游" fmt.Println(s3) /** Trim函数的签名如下所示: func Trim(s string, cutset string) string 以下是对函数签名相关参数的说明: s: 表示待操作的字符串 cutset: 表示需要删除的首尾字符串 string: 返回值是将待操作的字符串(s)经过删除首尾字符串(cutset)后的字符串结果返回。 温馨提示: 通常使用该函数去除字符串中包含的多余空格。 */ result1 := strings.Trim(s1, "2020") result2 := strings.Trim(s2, "2020") result3 := strings.Trim(s3, "2020") fmt.Println() fmt.Println(result1) fmt.Println(result2) fmt.Println(result3) }
四.字符串替换
package main import ( "fmt" "strings" ) func main() { s1 := "YinZhengjie2020" fmt.Println(s1) fmt.Println() /** Replace函数的签名如下所示: func Replace(s, old, new string, n int) string 以下是对函数签名相关参数说明: s: 表示待操作的字符串 old: 表示在代操作的字符串中需要替换的子串 new: 表示将old子串替换成新的字符串(new) n: 表示替换的个数,当n为正数时,仅替换相应个数的子串,当n为负数时,则不限制替换的个数,即全部匹配。 */ result1 := strings.Replace(s1, "YinZhengjie", "尹正杰", 1) fmt.Println(result1) result2 := strings.Replace(s1, "e", "E", 2) fmt.Println(result2) result3 := strings.Replace(s1, "n", "N", -1) fmt.Println(result3) }
五.字符串分割
package main import ( "fmt" "strings" ) func main() { s1 := "YinZhengjie 尹正杰 2020" fmt.Println(s1) fmt.Println() /** Split函数的签名如下所示: func Split(s, sep string) []string 以下时对函数签名的相关参数说明: s: 表示待操作的字符串 sep: 表示以那个字符串为切割 []string: 返回值是一个字符串切片数组。 温馨提示: Split的作用和join相反,是把字符串按照指定的子串切割成字符串切片 */ result1 := strings.Split(s1, " ") //此处我们按照空格来进行切分 fmt.Println(result1) /** 如下所示,通过查看Fields函数源码,默认是按照指定的特定的分隔符进行切割的. 通过"[256]uint8{' ': 1, ' ': 1, 'v': 1, 'f': 1, ' ': 1, ' ': 1}"进行切割 */ result2 := strings.Fields(s1) fmt.Println(result2) }
六.判断字符串的前后缀
package main import ( "fmt" "strings" ) func main() { s1 := "yinzhengjie2020" fmt.Println(s1) /** HasPrefix函数签名如下: func HasPrefix(s, prefix string) bool 以下是对函数签名的相关参数说明: s: 表示待匹配的字符串 prefix: 指定一个字符串,判断待匹配的字符串(s)是否以指定字符串(prefix)开头的 bool: 返回的结果是一个布尔值,如果是指定的字符串(prefix)开头,则返回true,否则返回false. */ result1 := strings.HasPrefix(s1, "yin") fmt.Printf("s1是以'yin'字符开头,结果为: %t ", result1) /** HasSuffix函数签名如下: func HasSuffix(s, suffix string) bool 以下是对函数签名的相关参数说明: s: 表示待匹配的字符串 suffix: 指定一个字符串,判断待匹配的字符串(s)是否以指定字符串(suffix)结尾的 bool: 返回的结果是一个布尔值,如果是指定的字符串(suffix)结尾,则返回true,否则返回false. */ result2 := strings.HasSuffix(s1, "2020") fmt.Printf("s1是以'2020'字符结尾,结果为: %t ", result2) }
七.字符串大小写转换
package main import ( "fmt" "strings" ) func main() { s1 := "YinZhengjie2020" fmt.Println(s1) //将字符串转换为大写 upper := strings.ToUpper(s1) fmt.Println(upper) //将字符串转换成小写 lower := strings.ToLower(s1) fmt.Println(lower) }
八.其它常见的API文档
博主推荐阅读: https://studygolang.com/pkgdoc https://studygolang.com/static/pkgdoc/pkg/strings.htm