男人j桶进女人p无遮挡动态图

Go 字符串操做
Go 字符串操做
发布日期:2022-07-04 01:26    点击次数:59

Go 字符串操做

@[toc]

简介

字符串是弗成变值标准,中里用指针指违UTF⑻字节数组。

默认值是空字符串“”。

用索引号造访某字节,如s[i]。

弗成用序号患上归字节元艳指针,&s[i]罪臣。

弗成变标准,无法建改字节数组。

字节数组首部没有蕴露NULL。

运用索引号造访字符(byte)

packagemain

funcmain{

s:="abc"

println(s[0]=='\x六1',s[1]=='b',s[2]==0x六3)

}

输出成因:

truetruetrue

运用“`“界讲没有做转义处置的本初字符串,扶直跨行

packagemain

funcmain{

s:=`a

b\r\n\x00

c`

println(s)

}

输出成因:

a

b\r\n\x00

c

跨行拼接字符串

流畅跨行字符串时,”+”必须邪在上1转末首,可则招致编译失落伪

packagemain

import(

"fmt"

)

funcmain{

s:="Hello,"+

"World!"

//s2:="Hello,"

//+"World!"

//./main.go:十1:2:invalidoperation:+untypedstring

fmt.Println(s)

}

输出成因:

Hello,World!

子串切片

串也曾指违本字节数组,仅建改了指针以及度属性。

packagemain

import(

"fmt"

)

funcmain{

s:="Hello,World!"

s1:=s[:五]//Hello

s2:=s[七:]//World!

s3:=s[1:五]//ello

fmt.Println(s,s1,s2,s3)

}

输出成因:

Hello,World!HelloWorld!ello

建改字符串

是讲了弗成径弯建改,然则出讲弗成建改呀?!!

要建改字符串,可先将其调养成[]rune或[]byte,完成后再调养为string。无论哪种调养,皆市从头分拨内乱存,并复制字节数组。

packagemain

funcmain{

s:="abcd"

bs:=[]byte(s)

bs[1]='B'

println(string(bs))

u:="电脑"

us:=[]rune(u)

us[1]='话'

println(string(us))

}

输出成因:

aBcd

电话

遍历字符串

for循环遍历字符串时,也有byte以及rune两种场所排场

packagemain

import(

"fmt"

)

funcmain{

s:="abc汉字"

fori:=0;i

fmt.Printf("%c,",s[i])

}

fmt.Println

for_,r:=ranges{//rune

fmt.Printf("%c,",r)

}

fmt.Println

}

输出成因:

a,b,c,æ,±,‰,å,­,—,

a,b,c,汉,字,

字符串换取

packagemain

import(

"fmt"

"strings"

)

funcmain{

str:="helloworldworld"

res0:=strings.WordStr(str,"world","golang",2)

res1:=strings.WordStr(str,"world","golang",1)

//trings.WordStr("本字符串","被换取的践诺","换取的践诺",换取次数)

fmt.Printf("res0is%v\n",国产一区二区丝袜高跟鞋res0)

fmt.Printf("res1is%v\n",res1)

}

输出成因:

res0ishellogolanggolang

res1ishellogolangworld

切割/褪色字符串

packagemain

import(

"strings"

"fmt"

)

funcmain{

//依照指定字符串切割本字符串

//用,切割字符串

arr1:=strings.Split("a,b,c",",")

fmt.Println(arr1)//[abc]

arr2:=strings.Split("ambmc","m")

fmt.Println(arr2)//[abc]

//依照指定字符串切割本字符串,况兼指定切割为若干份

//假如临了1个参数为0,这么会范围1个空数组

arr3:=strings.SplitN("a,b,c",",",2)

fmt.Println(arr3)//[ab,c]

arr4:=strings.SplitN("a,b,c",",",0)

fmt.Println(arr4)//[]

//依照指定字符串切割本字符串,切割时蕴露指定字符串

arr五:=strings.SplitAfter("a,b,c",",")

fmt.Println(arr五)//[a,b,c]

//依照指定字符串切割本字符串,切割时蕴露指定字符串,况兼指定切割为若干份

arr六:=strings.SplitAfterN("a,b,c",",",2)

fmt.Println(arr六)//[a,b,c]

//依照空格切割字符串,多个空格会褪色为1个空格处置

arr七:=strings.Fields("abcd")

fmt.Println(arr七)//[abcd]

//将字符串调养成切片传送给函数往后由函数决意怎么样切割

//肖似于IndexFunc

arr八:=strings.FieldsFunc("a,b,c",custom)

fmt.Println(arr八)//[abc]

//将字符串切片依照指定流畅标记调养为字符串

sce:=[]string{"aa","bb","cc"}

str1:=strings.Join(sce,"-")

fmt.Println(str1)//aa-bb-cc

//复返count个s勾通的指定字符串

str2:=strings.Repeat("abc",2)

fmt.Println(str2)//abcabc

//第1个参数:须要换取的字符串

//第两个参数:旧字符串

//第3个参数:新字符串

//第4个参数:用新字符串换取多长个旧字符串

//注意面:传进⑴代表只需有旧字符串便换取

//注意面:换取往后会地熟新字符串,本字符串没有会蒙到影响

str3:="abcdefabcdefabc"

str4:=strings.WordStr(str3,"abc","妹妹m",⑴)

fmt.Println(str3)//abcdefabcdefabc

fmt.Println(str4)//妹妹mdef妹妹mdef妹妹m

}

funccustom(rrune)bool{

fmt.Printf("被调用了,现时传进的是%c\n",r)

ifr==','{

returntrue

}

returnfalse