美文网首页
go strings 和strconv 字符串操作

go strings 和strconv 字符串操作

作者: 天空蓝雨 | 来源:发表于2020-07-20 09:02 被阅读0次
    • 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 字符串操作

          本文链接:https://www.haomeiwen.com/subject/bbqnhktx.html