字符串包

Go字符串相关包简介 #

Go提供的字符串处理包:
1. strconv
2. strings

https://pkg.go.dev/strconv?tab=doc
https://pkg.go.dev/strings?tab=doc

常用字符串处理函数 #

package main

import (
	"strings"
)


func main() {

	println("字符串中是否包含es:  ", strings.Contains("test", "es"))
	println("统计字串出现次数:     ", strings.Count("test", "t"))
	println("是否含前缀: ", strings.HasPrefix("test", "te"))
	println("是否含后缀: ", strings.HasSuffix("test", "st"))
	println("出现位置:     ", strings.Index("test", "e"))
	println("拼接字符串:      ", strings.Join([]string{"a", "b", "c"}, "-"))
	println("重复字符串:    ", strings.Repeat("ab", 5))
	println("字符串替换:   ", strings.Replace("foo", "o", "0", -1))
	println("字符串替换:   ", strings.Replace("foo", "o", "0", 1))
	println("分隔字符串:     ", strings.Split("a-b-c-d-e", "-"))
	println("转为小写:   ", strings.ToLower("TeST"))
	println("转为大写:   ", strings.ToUpper("test"))

	println("字符串长度: ", len("hello"))
	println("取字符串指定下标字符:", "hello"[1])
}
打印如下:
字符串中是否包含es:   true
统计字串出现次数:      2
是否含前缀:  true
是否含后缀:  true
出现位置:      1
拼接字符串:       a-b-c
重复字符串:     ababababab
字符串替换:    f00
字符串替换:    f0o
分隔字符串:      [5/5]0xc000080000
转为小写:    test
转为大写:    TEST
字符串长度:  5
取字符串指定下标字符: 101

strconv包下的字符串处理函数 #

https://studygolang.com/static/pkgdoc/pkg/strconv.htm
1. Itoa()、Atoi()
2. FormatXxx() 其它类型值格式化为字符串类型值
3. AppendXxx()
4. ParseXxx() 字符串转指定类型值

func Itoa(i int) string  int型数值转字符串
func FormatInt(i int64, base int) string 第1个参数为int64类型数值,第2个参数为要转成的进制数
 int64数值转成指定的进制数字符串
 示例:var abc int64= 8
    fmt.Println("转成二进制:" + strconv.FormatInt(abc, 2)) //转成二进制:1000
    fmt.Println("转成8进制:" + strconv.FormatInt(abc, 8)) //转成8进制:10
    var abc int= 8
    fmt.Println("转成8进制:" + strconv.FormatInt(int64(abc), 8)) //转成8进制:10

func FormatUint(i uint64, base int) string uint64数值转成指定的进制数字符串
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
func FormatBool(b bool) string bool类型值转字符串"true"/"false"

func AppendInt(dst []byte, i int64, base int) []byte
func AppendUint(dst []byte, i uint64, base int) []byte
func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte
func AppendBool(dst []byte, b bool) []byte

func Atoi(s string) (int, error) 字符转int型数值,非数值型字符串返回error
func ParseInt(s string, base int, bitSize int) (i int64, err error) 字符串转int64值
func ParseUint(s string, base int, bitSize int) (uint64, error) 字符串转uint64值
func ParseFloat(s string, bitSize int) (float64, error) 字符串转float64值
  示例:
    var str01 string= "1.5"
  	f,err := strconv.ParseFloat(str01, 64)
  	if(err==nil) {
  		fmt.Printf("%T %+v", f, f) //float64 1.5
  	} else {
  		fmt.Println("转换错误")
  	}
func ParseBool(str string) (bool, error) 字符串转bool型值,
    "1", "t", "T", "true", "TRUE", "True" 转为true
    "0", "f", "F", "false", "FALSE", "False" 转false
    其它值返回error错误

strings包下的字符串处理函数 #

https://studygolang.com/static/pkgdoc/pkg/strings.htm

func ToLower(s string) string 字符串转小写
func ToUpper(s string) string 字符串转大写
func Trim(s string, cutset string) string 去除空格
func TrimFunc(s string, f func(rune) bool) string
func TrimLeft(s string, cutset string) string
func TrimLeftFunc(s string, f func(rune) bool) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
func TrimRight(s string, cutset string) string
func TrimRightFunc(s string, f func(rune) bool) string
func TrimSpace(s string) string

func Title(s string) string 返回s中每个单词的首字母都改为标题格式的字符串拷贝,即每个单词首字母大写
func ToTitle(s string) string 返回将所有字母都转为对应的标题版本的拷贝
func ToTitleSpecial(c unicode.SpecialCase, s string) string
func ToLowerSpecial(c unicode.SpecialCase, s string) string
func ToUpperSpecial(c unicode.SpecialCase, s string) string

func Index(s, substr string) int 子串substr在字符串s中第一次出现的位置,不存在则返回-1
func IndexByte(s string, c byte) int 字符c在s中第一次出现的位置,不存在则返回-1
func IndexAny(s, chars string) int  字符串chars中的任一utf-8码值在s中第一次出现的位置,如果不存在或者chars为空字符串则返回-1
func IndexRune(s string, r rune) int  unicode码值r在s中第一次出现的位置,不存在则返回-1
func IndexFunc(s string, f func(rune) bool) int
func LastIndex(s, substr string) int 子串substr在字符串s中最后一次出现的位置,不存在则返回-1
func LastIndexAny(s, chars string) int
func LastIndexByte(s string, c byte) int
func LastIndexFunc(s string, f func(rune) bool) int

func Join(a []string, sep string) string 切片转字符串,合并字符串
func Split(s, sep string) []string 字符串分隔
func SplitN(s, sep string, n int) []string
func SplitAfter(s, sep string) []string
func SplitAfterN(s, sep string, n int) []string

func Repeat(s string, count int) string
func Replace(s, old, new string, n int) string

func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
func Map(mapping func(rune) rune, s string) string

func Count(s, substr string) int 返回字符串s中有几个不重复的sep子串
Build by Loppo 0.6.15