-
求字符串长度
len(str)
package main import ( "fmt" ) func main(){ str := "我爱我家" //len(str) 打印字符串的长度(字节数) fmt.Println(str,len(str))//每个中文汉字占3个字节 }输出结果为:
我爱我家 12 -
拼接字符串
两种方式:
(1)str1+str2
(2) fmt.Sprinf(格式化样式,参数列表)
格式化样式:字符串形式,格式化动词以%开头。
参数列表:多个参数以逗号分隔,个数必须与格式化样式中的动词个数对应,否则报错。
package main import ( "fmt" ) func main(){ str := "我爱我家" //用‘+’方式拼接,直接打印到终端 str2 := "的狗" str3 := str + str2 fmt.Println(str3) //与‘+’拼接不同,fmt.Sprintf是将两个字符串拼接到一起,然后返回给一个字符串 str4 :="的猫" str5 := fmt.Sprintf("%s%s",str,str4)//%s,以字符串形式返回 fmt.Println(str5) }输出结果:
我爱我家的狗 我爱我家的猫-
分割字符串
strings.Split(str,sep)
str : 待分割的字符串
sep : 分割符,字符串类型,需要用双引号
package main import ( "fmt" "strings" ) func main(){ str := "我爱我家" //strings.Split分割字符串 ret := strings.Split(str,"我")//用“我”进行分割 fmt.Println(ret) }输出结果:
[ 爱 家]4. 判断字符串中是否包含另一个字符串
strings.Contains(s1,s2)
s1中包含s2,则返回true,否则返回false
package main import ( "fmt" "strings" ) func main(){ str := "我爱我家" //strings.Contains判断是否包含 fmt.Println(strings.Contains(str,"家")) }输出结果:
true5. 前缀后缀判断
(1)strings.HasPrefix(s1,s2)
判断s1是否以s2为前缀开头
(2)strings.HasSuffix(s1,s2)
判断s1是否以s2为后缀结尾
package main import ( "fmt" "strings" ) func main(){ str := "我爱我家" //判断前缀 fmt.Println(strings.HasPrefix(str,"我")) //判断后缀 fmt.Println(strings.HasSuffix(str,"我")) }输出结果:
true false6. 判断子串出现的位置
(1)strings.index(s1,s2)
返回s2子串在s1中第一次出现的位置,index从0开始
(2) strings.Lastindex(s1,s2)
返回s2子串在s1中最后一次出现的位置
package main import ( "fmt" "strings" ) func main(){ //判断子串出现的位置 str6 := "we will rock you" fmt.Println(strings.Index(str6,"i")) fmt.Println(strings.Index(str6,"l"))//默认返回找到的第一个 fmt.Println(strings.LastIndex(str6,"l")) }输出结果:
4 5 67. join操作
join会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,但是本来没有,去构造这个数据的代价也不小.
join与‘+’以及fmt.Sprintf()的性能对比,具体可以看:
package main import ( "fmt" "strings" ) func main(){ str := "我爱我家" str6 := "we will rock you" //string.Join,字符串拼接的又一种方式 str7 := strings.Join([]string{str,str6},",") fmt.Println(str7) }输出结果:
我爱我家,we will rock you -