标准库-strings
前言
标准库strings用于处理utf-8编码的字符串。
字符串比较-Compare
func Compare(a,b string) int
- 若 a==b ,则返回0;若 a <b ,则返回 -1;若 a>b ,则返回 1。
- 字符串的比较方法是根据单个字符的ASCII编码。
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "hello" var str2 string = "world" fmt.Println(strings.Compare(str1,str2)) // -1 fmt.Println(strings.Compare(str2,str1)) // 1 fmt.Println(strings.Compare(str1,str1)) // 0 }
检测字符串是否包含子串-Contains
func Contains(s,substr string) bool
示例代码:
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("hello world","hello")) // true fmt.Println(strings.Contains("hello world","hel123")) // false }
大小写转换
函数原型:
func ToUpper(substr string) string func ToLower(substr string) string func ToTitle(substr string) string
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "heLLo, goLang" fmt.Println(strings.ToUpper(str1)) // HELLO, GOLANG fmt.Println(strings.ToLower(str1)) // hello, golang fmt.Println(strings.ToTitle(str1)) // HELLO, GOLANG }
统计子字符串出现的次数
函数原型:
func Count(str,substr string) int
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "heLLo, goLang" var str2 string = "o" fmt.Println(strings.Count(str1,str2)) }
判断字符串的前后缀
函数原型:
func HasPrefix(str,substr string) bool func HasSuffix(str,substr string) bool
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "heLLo, goLang" var str2 string = "o" var str3 string = "he" var str4 string = "Lang" fmt.Println(strings.HasPrefix(str1, str2)) // false fmt.Println(strings.HasPrefix(str1, str3)) // ture fmt.Println(strings.HasSuffix(str1, str4)) // ture }
分割和连接
函数原型:
func Split(str,separator string) []string func Join(strs []string) string
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "heLLo,goLang" fmt.Println(strings.Split(str1, ",")) // [heLLo goLang] for _,v := range strings.Split(str1, ",") { fmt.Println(v) } fmt.Println(strings.Join([]string{"Hello","Golang","World"}, "、")) // Hello、Golang、World }
索引
这个操作能获取指定字符首次出现的位置,通常用来判断子字符串在对应字符串中的位置。
函数原型:
func Index(str,substr string) int
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = "heLLo,goLang" fmt.Println(strings.Index(str1, "LL")) // 2 }
清洗
清洗操作可以将字符串两端的一些字符删掉,常用来删除字符串两端的空格。
函数原型:
func Trim(s, cutset string) string func TrimLeft(s, cutset string) string func TrimRight(s, cutset string) string func TrimPrefix(s, prefix string) string func TrimSuffix(s, suffix string) string func TrimSpace(str string) string
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = " heLLo,goLang " var str2 string = "123heLLo,goLang123" fmt.Println(strings.Trim(str1, " ")) // heLLo,goLang fmt.Println(strings.Trim(str2, "123")) // heLLo,goLang // 专门用来清除两端空格的函数 fmt.Println(strings.TrimSpace(str1)) // heLLo,goLang }
替换
清洗操作只能完成首尾的空格或者指定字符的替换,要完成更为复杂的操作则要调用NewReplacer()
函数。
函数原型:
func Replace(s, old, new string, n int) string {} func NewReplacer(oldnew ...string) *Replacer
示例代码:
package main import ( "fmt" "strings" ) func main() { var str1 string = " heLLo,goLang " newReplacer1 := strings.NewReplacer(" ","++", ",", "==") // ++++heLLo==goLang++++ fmt.Println(newReplacer1.Replace(str1)) }
参考文章
- 官方文档
- 谢伟 - 《Go语言项目开发上手指南》机械工业出版社