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
网友评论