go strings 和strconv 字符串操作

  • strings 字符串操作

package main
/* 练习 字符串的操作 */
import (
    . "fmt"
    _ "strconv"
    "strings"
)

// 字符串操作
/* strings */
// 包含
// func Contains(s, substr string) bool
func contains(){
    str := "我是yxl, 嘿嘿"
    Printf("%v \n", strings.Contains(str, "yxl"))
}

// 连接
// func Join(a []string, sep string) string
func join(){
    str_slice := []string{"yxl", "love", "gch"}
    Printf("%s", strings.Join(str_slice, "❤"))
}

// 字串索引
// func Index(s, sep string) int
func index(){
    str := "我是yxl, 嘿嘿"
    Printf("%d", strings.Index(str, "yxl"))  // 这里是字节的索引,所以汉字占3 个字节 此处结果为6

}
// 字符串重复 多次
// func Repeat(s string, count int) string
func repeat(){
    str := "我是yxl, 嘿嘿"
    Printf("%s", strings.Repeat(str, 3))


}
// 字串替换
// func Replace(s, old, new string, n int) string
func replace(){
    str := "我是yxl, 嘿嘿"
    new_str := strings.Replace(str, "yxl", "gch", 1)  // 最后的参数, >= 0 尽可能替换, 小于0 全部替换
    Printf(new_str) 
}
// 分割为 切片
// func Split(s, sep string) []string
func split(){
    str := "我爱|徐州|更爱你"
    str_slice := strings.Split(str, "|") 
    Printf("%v", str_slice)

}
// 去掉 两边的字符, 和 py 类似, 属于递归清除每个字符,而不是当做整个子字符 清除, "abc" 清除 两边的 a、b、c 而不是 abc 整体
// func Trim(s string, cutset string) string
func delete_char(){  
    str := "* 前面有空格,后面也有 *"
    Println("原始字串:", str)
    str = strings.Trim(str, " *")
    Printf("清除两边字符后为:%v", str)

}
// 按照空白符切割,返回切片
// func Fields(s string) []string
func split_by_space(){
    str := "    前空格, 后空格        "
    Printf("原始字符:%v", str)
    new_str_slice := strings.Fields(str)
    Printf("操作之后的字符串:%v, 操作之后的切片: %v", str, new_str_slice)
    // > 原始字符:  前空格, 后空格        操作之后的字符串:   前空格, 后空格        , 操作之后的切片: [前空格, 后空格]
}




func main(){
    // contains()
    // join()
    // index()
    // repeat()
    // replace()
    // split()
    // delete_char()
    split_by_space()

}
  • strconv 字符串转换

实现基本数据类型转换为 字符串的操作
Append 系列 酱整数转化为字符串后,添加到现有的字节数组中

// func AppendInt(dst []byte, i int64, base int) []byte  base 是进制如 10 表示十进制
// func AppendQuote(dst []byte, s string) []byte  会添加字符的双引号
// func AppendQuoteRune(dst []byte, r rune) []byte   添加单引号的字符, 双引号会报错
func append(){
    str := make([]byte, 0, 100)
    str = strconv.AppendInt(str, 4567, 10)
    str = strconv.AppendBool(str, false)
    str = strconv.AppendQuote(str, "abcdefg")
    str = strconv.AppendQuoteRune(str, '单')
    Println(string(str))
    // > 4567false"abcdefg"'单'
}

Format 系列函数把其他类型的转换为字符串

// func FormatFloat(f float64, fmt byte, prec, bitSize int) string  这个看不懂
// func Itoa(i int) string 等价于 FormatInt(int64(i), 10)
func format(){
    a := strconv.FormatBool(false)
    b := strconv.FormatFloat(123.23, 'g', 12, 64)
    c := strconv.FormatInt(1234, 10)
    d := strconv.FormatUint(12345, 10)
    e := strconv.Itoa(1023)
    Println(a, b, c, d, e)
    //> false 123.23 1234 12345 1023
}

Parse 系列函数把字符串转换为其他类型

    a, _:= strconv.ParseBool("false")

    b, _:= strconv.ParseFloat("123.23", 64)

    c,_ := strconv.ParseInt("1234", 10, 64)

    d, _ := strconv.ParseUint("12345", 10, 64)

    e, _ := strconv.Atoi("1023")

    Println(a, b, c, d, e)
> false 123.23 1234 12345 1023

你可能感兴趣的:(go strings 和strconv 字符串操作)