字符串操作

字符串是utf-8字符的一个序列,当字符为ascii码时占用1个字节,其他字符则根据需要占用2-4个字节。

go中字符串和c++、java、python不同(java始终占用2个字节),而同时根据需要占用1-4个字节。

字符串是值类型,且值不可变,就是创建完某个文本后你无法再次修改这个文本的内容。

字符串中的某个字符元素可以通过索引获取,如下:

字符串str的第一个元素:str[0]

第i个元素:str[i-1]

最后一个元素:str[len(str)-1]

注:获取字符串某个元素的地址这种操作是非法的,如:&str[i]

字符串操作

字符串的各种操作:
1、判断前后缀
strings.HasPrefix(s,prefix string) bool
strings.HasSuffix(s,suffix string) bool

2、字符串包含
strings.Contains(s, substr string) bool

3、判断子字符串或字符在父字符串中出现的位置(索引)
strings.Index(s,str string) int         返回字符串str在字符串s中首次出现位置的索引,-1表示字符串s不包含字符串str
strings.LastIndex(s,str string) int         返回字符串str在字符串s中的最后出现位置的索引,-1表示字符串s不包含字符串str
strings.IndexRune(s string, r rune) int     如果ch是非ascii编码字符,使用如下函数对字符进行定位

4、字符串替换
将字符串 str 中的前 n 个字符串 old 替换为字符串 new,并返回一个新的字符串,如果 n = -1 则替换所有字符串 old 为字符串 new
strings.Replace(str, old, new string, n int) string

5、统计字符串出现次数
strings.Count(s, str string) int

6、重复字符串
strings.Repeat(s, count int) string     重复 count 次字符串 s 并返回一个新的字符串

7、修改字符串大小写
strings.ToLower(s) string       改成小写
strings.ToUpper(s) string       改成大写

8、开头结尾字符串删除
strings.TrimSpace(s)        去除字符串开头和结尾的空白符号
strings.Trim(str, "He")     去除字符串开头和结尾的空白符号

9、字符串分割
strings.Fields(s)       利用空白作为分隔符将字符串分割为若干块,并返回一个 slice 。如果字符串只包含空白符号,返回一个长度为 0 的 slice
strings.Split(s, sep)   自定义分割符号对字符串分割,返回 slice

10、拼接slice到字符串
strings.Join(sl []string, sep string) string    将元素类型为 string 的 slice 使用分割符号来拼接组成一个字符串

11、字符串与其它类型的转换:与字符串相关的类型转换都是通过 strconv 包实现的
数字转字符串:
strconv.Itoa(i int) string          返回数字 i 所表示的字符串类型的十进制数
strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string      将 64 位浮点型的数字转换为字符串

字符串转数字:
strconv.Atoi(s string) (i int, err error)           将字符串转换为 int 型
strconv.ParseFloat(s string, bitSize int) (f float64, err error)    将字符串转换为 float64 型

demo

package main

import (
    "fmt"
    "strconv"
    "strings"
)



func main() {
    str := "Hello ,World,cc"

    //判断前后缀
    fmt.Println("str prefix is:", strings.HasPrefix(str, "he"))
    fmt.Println("str Suffix is:", strings.HasSuffix(str, "d"))

    //判断是否包含d字符
    fmt.Println("str contain:", strings.Contains(str, "d"))

    //判断字符出现位置索引
    fmt.Println("the position of the first instance of is l is", strings.Index(str, "l"))
    fmt.Println("the position of the last instance of is l is", strings.LastIndex(str, "l"))
    fmt.Println("the position of the last instance of is b is", strings.Index(str, "b"))

    //替换字符串
    //fmt.Println("the hello world is change:", strings.Replace(str, "l", "o", -1))                 //替换所有l为o
    fmt.Println("the hello world is change:", strings.Replace(str, "l", "o", 2)) //替换2个l为o

    //统计字符串出现次数
    fmt.Println("the l in s is:", strings.Count(str, "l"))

    //重复字符串str 2次,如果count为1则相当于没有变化
    fmt.Println("the repeat s is:", strings.Repeat(str, 2))

    //修改字符串大小写
    fmt.Println("the Lower s is:", strings.ToLower(str))
    fmt.Println("the Upper s is:", strings.ToUpper(str))

    //开头结尾字符串修剪
    fmt.Println("the trim s is:", strings.TrimSpace(str))
    fmt.Println("the e trim s is:", strings.Trim(str, "he"))

    //字符串分割
    fmt.Println("the split1 s is:", strings.Fields(str)) //以空白符分割字符串,返回切片
    fmt.Println("the split2 s is:", strings.Split(str, ","))

    //字符串拼接
    s1 := strings.Split(str, ",")
    for _, v1 := range s1 {
        fmt.Println(v1)
    }
    s2 := strings.Join(s1, ";")
    fmt.Println(s2)

    //字符串与其他类型的转换
    var orig string = "666"
    var an int
    var newS string

    fmt.Printf("The size of ints is: %d\n", strconv.IntSize)

    an, _ = strconv.Atoi(orig)
    fmt.Printf("The integer is: %d\n", an)
    an = an + 5
    newS = strconv.Itoa(an)
    fmt.Printf("The new string is: %s\n", newS)

}

你可能感兴趣的:(go,golang)