string

作者: isuntong | 来源:发表于2020-03-09 13:30 被阅读0次
package main

import "fmt"

//23
func main() {
    /*
    Go中的字符串是一个字节的切片

    字符串是一些字节的集合
        理解为一个字符序列
        那也会有索引等


    字符:对应编码表中的编码值

    */

    //1. 定义
    s1 := "hello中国"
    s2 := `hello world`
    fmt.Println(s1)
    fmt.Println(s2)

    //2. 字符串的长度
    fmt.Println(len(s1))
    fmt.Println(len(s2))

    //3. 获取某个字符
    fmt.Println(s2[0])
    a := 'h'
    b := 104
    fmt.Printf("%c,%c,%c\n",s2[0],a,b)

    //4. 字符串的遍历
    for i:=0;i<len(s2);i++ {
        fmt.Printf("%c",s2[i])
    }

    for i:=0;i<len(s1);i++ {
        fmt.Printf("%c",s1[i]) //乱码,因为汉字3个字节
    }

    //for range
    for i,v := range s2 {
        fmt.Println(i,v)
    }


    //5. 字符串是字节的集合
    slice1 := []byte{65,66,67,68,69}
    s3 := string(slice1) //根据一个字节切片,构建字符串
    fmt.Println(s3)

    s4 := "abcdef"
    slice2 := []byte(s4) //根据字符串获取对应的粽子节切片
    fmt.Println(slice2)
    
    //字符串不能修改
    

}

strings包的使用

package main

import (
    "fmt"
    "strings"
)

//23
func main() {
    /*
    Go中的字符串是一个字节的切片

    字符串是一些字节的集合
        理解为一个字符序列
        那也会有索引等


    字符:对应编码表中的编码值

    */

    //1. 定义
    s1 := "hello中国"
    s2 := `hello world`
    fmt.Println(s1)
    fmt.Println(s2)

    //2. 字符串的长度
    fmt.Println(len(s1))
    fmt.Println(len(s2))

    //3. 获取某个字符
    fmt.Println(s2[0])
    a := 'h'
    b := 104
    fmt.Printf("%c,%c,%c\n",s2[0],a,b)

    //4. 字符串的遍历
    for i:=0;i<len(s2);i++ {
        fmt.Printf("%c",s2[i])
    }

    for i:=0;i<len(s1);i++ {
        fmt.Printf("%c",s1[i]) //乱码,因为汉字3个字节
    }

    //for range
    for i,v := range s2 {
        fmt.Println(i,v)
    }


    //5. 字符串是字节的集合
    slice1 := []byte{65,66,67,68,69}
    s3 := string(slice1) //根据一个字节切片,构建字符串
    fmt.Println(s3)

    s4 := "abcdef"
    slice2 := []byte(s4) //根据字符串获取对应的粽子节切片
    fmt.Println(slice2)

    //字符串不能修改


    /*
    strings包的使用
    */
    ss1 := "helloworld"
    fmt.Println(strings.Contains(ss1, "h")) //true
    //是否包含任意一个字符
    fmt.Println(strings.ContainsAny(ss1, "abcd")) //true
    //统计出现次数
    fmt.Println(strings.Count(ss1, "l")) //3

    ss2 := "20191234课堂笔记.txt"
    //以前缀开头,后缀结尾
    if strings.HasPrefix(ss2, "2019") {
        fmt.Println("2019年的东西")
    }
    if strings.HasSuffix(ss2, ".txt") {
        fmt.Println("文本文件")
    }

    fmt.Println(strings.Index(ss1, "l")) //2 查找首次出现位置,不存在返回-1
    fmt.Println(strings.IndexAny(ss1,"abcdh")) //0 查找任意字符出现的位置
    fmt.Println(strings.LastIndex(ss1,"l")) //8 从后往前找

    //拼接
    ss3 := []string{"abc","st","hello","world"}
    ss4 := strings.Join(ss3,"****")
    fmt.Println(ss4)

    //切割
    ss5 := "123,456,789"
    ss6 := strings.Split(ss5,",")
    fmt.Println(ss6)

    //重复
    ss7 := strings.Repeat("hello", 5)
    fmt.Println(ss7) //hellohellohellohellohello

    //替换 helloworld                          -1全部替换
    ss8 := strings.Replace(ss1, "l", "*", 2)
    fmt.Println(ss8) //he**oworld

    //大小写
    ss9 := "DAFAafasfa"
    fmt.Println(strings.ToLower(ss9)) //dafaafasfa
    fmt.Println(strings.ToUpper(ss9)) //DAFAAFASFA

    //截取
    fmt.Println(ss1)
    ss10 := s1[0:5]
    fmt.Println(ss10) //hello

}

strconv包的使用

/*
    strconv:字符串和基本数据类型之间的转换
    */
    // fmt.Println("aa"+100) +左右类型需要一样
    //1. bool类型
    ss11 := "true"
    b1,err := strconv.ParseBool(ss11)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T,%t\n",b1,b1)

    ss12 := strconv.FormatBool(b1)
    fmt.Printf("%T,%s\n",ss12,ss12)

    //整数
    ss13 := "100"
    i2,err := strconv.ParseInt(ss13,10,64)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%T,%d\n",i2,i2) //int64,100

    ss14 := strconv.FormatInt(i2,10)
    fmt.Printf("%T,%s\n",ss14,ss14) //string,100

    //itoa(),atoi()
    i3,err := strconv.Atoi("-42") //int,-42  转为int类型
    fmt.Printf("%T,%d\n",i3,i3)

    ss15 := strconv.Itoa(-42)
    fmt.Printf("%T,%s\n",ss15,ss15) //string,-42 转为string

相关文章

网友评论

      本文标题:string

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