怎么在Go語(yǔ)言中使用strings和strconv包?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的10多年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如成都發(fā)電機(jī)回收等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致稱譽(yù)。前綴和后綴
HasPrefix判斷字符串s是否以prefix開(kāi)頭:
strings.HaxPrefix(s string, prefix string) bool
示例:
package main import ( "fmt" "strings" ) func main() { pre := "Thi" str1 := "This is a Go program!" fmt.Println(strings.HasPrefix(str1, pre)) }
HasSuffix 判斷字符串 s 是否以 suffix 結(jié)尾:
strings.HasSuffix(s string, suffix string) bool
示例:
package main import ( "fmt" "strings" ) func main() { suffix := "am!" str1 := "This is a Go program!" fmt.Println(strings.HasSuffix(str1, suffix)) }
字符串包含關(guān)系
Contains 判斷字符串 s 是否包含 substr :
strings.Contains(s string, substr string) bool
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" str1 := "This is a Go program!" fmt.Println(strings.Contains(str1, substr)) }
判斷子字符串或字符在父字符串中出現(xiàn)的位置(索引)
Index 返回字符串 substr 在字符串 s 中的索引( substr 的第一個(gè)字符的索引),-1 表示字符串 s 不包含字符串 substr :
strings.Index(s string, sbustr string) int
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" substr2 := "Hi" str1 := "This is a Go program!" fmt.Println(strings.Index(str1, substr)) //輸出2 fmt.Println(strings.Index(str1, substr2))//輸出-1 }
LastIndex 返回字符串 substr 在字符串 s 中最后出現(xiàn)位置的索引( substr 的第一個(gè)字符的索引),-1 表示
字符串 s 不包含字符串 substr :
strings.LastIndex(s string, substr string) int
語(yǔ)法:
package main import ( "fmt" "strings" ) func main() { substr := "is" substr2 := "Hi" str1 := "This is a Go program!" fmt.Println(strings.LastIndex(str1, substr)) //輸出5 fmt.Println(strings.LastIndex(str1, substr2))//輸出-1 }
如果 r 是非 ASCII 編碼的字符,建議使用以下函數(shù)來(lái)對(duì)字符進(jìn)行定位:
strings.IndexRune(s string, r rune) int
示例
package main import ( "fmt" "strings" ) func main() { substr := '中' substr2 := '天' str1 := "我愛(ài)你中國(guó)" fmt.Println(strings.IndexRune(str1, substr)) //輸出9 fmt.Println(strings.IndexRune(str1, substr2))//輸出-1 } package main import ( "fmt" "strings" ) func main() { substr := "中" substr2 := "天" str1 := "我愛(ài)你?中國(guó)" //常見(jiàn)的漢字在utf8中占3個(gè)字節(jié),某些特殊的漢字(如?)在utf8中占四個(gè)字節(jié),所以輸出結(jié)果是13而不是12 fmt.Println(strings.Index(str1, substr)) //輸出13 fmt.Println(strings.Index(str1, substr2))//輸出-1 }
字符串替換
Replace 用于將字符串s 中的前 n 個(gè)字符串 old 替換為字符串 new ,并返回一個(gè)新的字符串,如果 n = -1 則替換所有字符串 old 為字符串 new :
strings.Replace(s string, old string, new string, n int) string
示例:
package main import ( "fmt" "strings" ) func main() { str1 := "我愛(ài)你熙中國(guó)熙" fmt.Println(strings.Replace(str1, "熙", "", 1)) //我愛(ài)你中國(guó)熙 fmt.Println(strings.Replace(str1, "熙", "", -1)) //我愛(ài)你中國(guó) }
統(tǒng)計(jì)字符串出現(xiàn)次數(shù)
Count 用于計(jì)算字符串 substr 在字符串 s 中出現(xiàn)的非重疊次數(shù):
strings.Count(s string, substr string) int
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" s := "This is a go program!" fmt.Println(strings.Count(s, substr)) //2 }
重復(fù)字符串
Repeat 用于重復(fù) count 次字符串 s 并返回一個(gè)新的字符串:
strings.Repeat(s string, count int) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a go program!" fmt.Println(strings.Repeat(s, 2)) //This is a go program!This is a go program! }
修改字符串大小寫(xiě)
ToLower 將字符串中的 Unicode 字符全部轉(zhuǎn)換為相應(yīng)的小寫(xiě)字符:
strings.ToLower(s string) string
ToUpper 將字符串中的 Unicode 字符全部轉(zhuǎn)換為相應(yīng)的大寫(xiě)字符:
strings.ToUpper(s string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" fmt.Println(strings.ToLower(s)) //this is a go program! fmt.Println(strings.ToUpper(s)) //THIS IS A GO PROGRAM! }
修剪字符串
你可以使用 strings.TrimSpace(s)
來(lái)剔除字符串開(kāi)頭和結(jié)尾的空白符號(hào);如果你想要剔除指定字符,則可以使用 strings.Trim(s,cutset)
來(lái)將開(kāi)頭和結(jié)尾的 cutset 去除掉。該函數(shù)的第二個(gè)參數(shù)可以包含任何字符,如果你只想剔除開(kāi)頭或者結(jié)尾的字符串,則可以使用 TrimLeft 或者 TrimRight 來(lái)實(shí)現(xiàn)。
去除字符串s左右兩側(cè)的空格:
strings.TrimSpace(s string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := " ThisThis is a Go program!This " fmt.Println(s) //原生打印 fmt.Println(strings.TrimSpace(s)) //剔除空格后的字符串 }
去除開(kāi)頭或結(jié)尾的字符串:
strings.Trim(s string cutset string) string strings.TrimLeft(s string, cutset string) string strings.TrumRight(s string, cutset string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "ThisThis is a Go program!This" fmt.Println(strings.Trim(s, "This")) // is a Go program! fmt.Println(strings.TrimLeft(s, "This"))//is a Go program!This fmt.Println(strings.TrimRight(s, "This"))//ThisThis is a Go program! }
分割字符串
strings.Fields(s) 將會(huì)利用1個(gè)或多個(gè)空白符號(hào)來(lái)作為動(dòng)態(tài)長(zhǎng)度的分隔符將字符串分割成若干小塊,并返
回一個(gè) slice,如果字符串只包含空白符號(hào),則返回一個(gè)長(zhǎng)度為 0 的 slice。
strings.Fields(s string) []string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" fmt.Printf("%v\n", strings.Fields(s)) //[This is a Go program!] }
strings.Split(s,sep)用于自定義分割符號(hào)來(lái)對(duì)指定字符串進(jìn)行分割,同樣返回slice。
因?yàn)檫@ 2 個(gè)函數(shù)都會(huì)返回 slice,所以習(xí)慣使用 for-range 循環(huán)來(lái)對(duì)其進(jìn)行處理
strings.Split(s string, sep string) []string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" result := strings.Split(s, "Go") fmt.Printf("%v\n", result) //[This is a program!] for _, value := range result { fmt.Printf("%s\n", value) } }
拼接slice到字符串
Join 用于將元素類型為 string 的 slice 使用分割符號(hào)來(lái)拼接組成一個(gè)字符串:
strings.Join(a []string, sep string) string
示例:
package main import ( "fmt" "strings" ) func main() { var s []string = []string{"I", "love", "you"} fmt.Println(strings.Join(s, " ")) //I love you }
從字符串中讀取內(nèi)容
函數(shù) strings.NewReader(str)
用于生成一個(gè) Reader 并讀取字符串中的內(nèi)容,然后返回指向該Reader 的指針,從其它類型讀取內(nèi)容的函數(shù)還有:
?Read() 從 []byte 中讀取內(nèi)容。
?ReadByte() 和 ReadRune() 從字符串中讀取下一個(gè) byte 或者 rune。
字符串與其它類型的轉(zhuǎn)換
與字符串相關(guān)的類型轉(zhuǎn)換都是通過(guò) strconv 包實(shí)現(xiàn)的。
該包包含了一些變量用于獲取程序運(yùn)行的操作系統(tǒng)平臺(tái)下 int 類型所占的位數(shù),如: strconv.IntSize 。
任何類型 T 轉(zhuǎn)換為字符串總是成功的。
針對(duì)從數(shù)字類型轉(zhuǎn)換到字符串,Go 提供了以下函數(shù):
?strconv.Itoa(i int) string 返回?cái)?shù)字 i 所表示的字符串類型的十進(jìn)制數(shù)。
?strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 將 64 位浮點(diǎn)型的數(shù)字轉(zhuǎn)換為字符串,其中 fmt 表示格式(其值可以是 'b' 、 'e' 、 'f' 或 'g' ), prec 表示精度, bitSize 則使用 32 表示 float32,用 64 表示 float64。
針對(duì)從字符串類型轉(zhuǎn)換為數(shù)字類型,Go 提供了以下函數(shù):
?strconv.Atoi(s string) (i int, err error) 將字符串轉(zhuǎn)換為 int 型。
?strconv.ParseFloat(s string, bitSize int) (f float64, err error) 將字符串轉(zhuǎn)換為 float64 型。
利用多返回值的特性,這些函數(shù)會(huì)返回 2 個(gè)值,第 1 個(gè)是轉(zhuǎn)換后的結(jié)果(如果轉(zhuǎn)換成功),第 2 個(gè)是可能出現(xiàn)的錯(cuò)誤,因此,我們一般使用以下形式來(lái)進(jìn)行從字符串到其它類型的轉(zhuǎn)換:
val, err = strconv.Atoi(s)
示例:
package main import ( "fmt" "strconv" ) func main() { origin := "666" var an int var newS string fmt.Printf("int類型的位數(shù)為: %d\n", strconv.IntSize) an, _ = strconv.Atoi(origin) fmt.Println(an) an += 5 newS = strconv.Itoa(an) fmt.Println(newS) }
輸出結(jié)果為:
int類型的位數(shù)為: 64
666
671
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
標(biāo)題名稱:怎么在Go語(yǔ)言中使用strings和strconv包-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://muchs.cn/article20/eejco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容