一,字符串如何转换为数组(切片)
个人理解的是 切片是动态数组,因为我是c 出身,下面切片暂且直接叫做数组了
1.数组的创建:
var endpoint = []string{ "0.0.0.0:2379"} //直接初始化数组
//数组 <<= string
IPAddresses := []string{ leftIP}
2.直接写进空的数组里面:
etcd :="sdfsdferf"
stringarr := make([]string, 0) //创建空数组
stringarr = append(stringarr, etcd)
/*stringarr = append(stringarr, "456")*/
println("*****")
for _, str := range stringarr {
println(str)
}
println("*****")
二,数组如何转换为字符串
1.将数组里的一个元素直接转化为字符串
arr := make([]string, 0)
arr[0] = "sfsdfsdf"
string := arr[0] //直接将该数组的一个元素,赋值给字符串
fmt.Printf("====>:%s\n", string)
2.将数组里面的数据全转换为字符串
func arrayToString(arr []string) string {
var result string
for _, i := range arr { //遍历数组中所有元素追加成string
result += i
}
return result
}
- 字符串处理
ports := strings.Replace(ports, ",", "", 1)
字符串替换 替换第一个匹配的字符串//可用于去掉第一个指定的字符串
- 字符串 转换成切片来处理
1. string 底层是一个byte的数组,因此string也可以进行切片处理
str:="hello@163.com"
使用切片获取到163.com
scli:=str[6:]
fmt.Println("==== result: ",scli)
2. string是不可变得,不能通过 str[0] = "z" 的方式来修改(string存储在静态去)
编译就会报错
3. 如果要修改字符串,先将string转换为 []byte 然后修改
比如:str="hello@163.com",改成 str"zhello@163.com"
Arr1:=[]byte(str)
Arr1[0]="z"
str=string(Arr1)
注意,转成[]byte后,可以处理数字和字母,不能处理中文。它是按字节处理的,一个中文是3个字节
解决办法:将string转还成[]rune,因为[]rune 是按字符处理,兼容汉字
Arr2:=[]rune(str)
Arr2[0]="北"
str=string(Arr2)