亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

Go strings 系統(tǒng)包的使用說(shuō)明

前文我們有學(xué)習(xí)了 string 變量,發(fā)現(xiàn) Go 語(yǔ)言并沒(méi)有向面向?qū)ο笳Z(yǔ)言那樣,類型中自帶方法來(lái)處理對(duì)象的值。Go語(yǔ)言中也有類似的操作,其操作全都在?strings 系統(tǒng)包中實(shí)現(xiàn)了。本文主要來(lái)講解一下如何使用 strings 系統(tǒng)包比較常用的字符串操作。

 

1. 獲取字符串長(zhǎng)度

在往數(shù)據(jù)庫(kù)中寫入數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫(kù)字段通常都會(huì)有長(zhǎng)度限制,所以在寫入之前最好事先判斷一下字符串的長(zhǎng)度是否符合自己的設(shè)計(jì)。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := "Hello Codey!"
  • 10? ? ? ? fmt.Println(len(str))
  • 11? ? ? ? fmt.Println(strings.Count(str, "")-1)
  • 12? }

執(zhí)行結(jié)果:

圖片描述

其實(shí)獲取字符串長(zhǎng)度常用的是用?len()?函數(shù)去獲取,因?yàn)?sring 的本質(zhì)是一個(gè) rune 切片,所以?len()?對(duì) string 也是可以直接使用的。如果想要通過(guò) strings 包來(lái)獲取長(zhǎng)度,我們可以通過(guò)?strings.Count(str,s string)int?來(lái)迂回達(dá)到目的,尋找字符串中的空字符串的個(gè)數(shù)就相當(dāng)于尋找字符之間的空隙(包括字符首尾),所以得到的數(shù)字就是長(zhǎng)度+1,我們得到結(jié)果后再減去1,就可以得到字符串的長(zhǎng)度了。

 

2. 比較字符串

在開發(fā)大小寫不敏感的應(yīng)用場(chǎng)景時(shí),比如說(shuō)地名的英文縮寫。一般情況我們都將字符串轉(zhuǎn)換為大寫或者小寫再進(jìn)行比較。Go 語(yǔ)言中的 strings 包中專門提供了一個(gè)大小寫不敏感的比較函數(shù)——strings.EqualFold(str1,str2 string)bool。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str1 := "Hello Codey!"
  • 10? ? ? ? str2 := "heLLo coDEy!"
  • 11? ? ? ? fmt.Println(strings.EqualFold(str1, str2))
  • 12? }

執(zhí)行結(jié)果:

圖片描述

 

3. 字符串分割

Go 語(yǔ)言中也是可以支持根據(jù)特定字符串將字符串分割為字符串?dāng)?shù)組的操作。通過(guò)使用?strings.Split(s, sep string) []string?來(lái)實(shí)現(xiàn)

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := "Hello Codey!"
  • 10? ? ? ? fmt.Println(strings.Split(str, " "))//使用空格字符串去分割str
  • 11? }

執(zhí)行結(jié)果:

圖片描述

 

4. 前后綴的判斷

在執(zhí)行文件操作的時(shí)候,經(jīng)常會(huì)用到的前后綴的操作,比如獲取日志文件的時(shí)候,獲取 .log 結(jié)尾,同時(shí)還要以2020?5?開頭的文件,就需要判斷前后綴是否含有這些字符串,Go 語(yǔ)言的前綴判斷是使用?strings.HasPrefix(s, prefix string``)bool,而后綴是使用?strings.HasSuffix(s, prefix string``)bool。

代碼示例

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := "2020_5_20.log"
  • 10? ? ? ? fmt.Println(strings.HasPrefix(str, "2020_5_"))
  • 11? ? ? ? fmt.Println(strings.HasSuffix(str, ".log"))
  • 12? }

執(zhí)行結(jié)果:

圖片描述

 

5. 去除前后空格

在處理前端輸入的數(shù)據(jù)的時(shí)候,有時(shí)會(huì)需要去除前后空格。Go 語(yǔ)言中使用?strings.TrimSpace(s string)string?來(lái)執(zhí)行這個(gè)操作。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := " Hello Codey! "
  • 10? ? ? ? fmt.Println(strings.TrimSpace(str))
  • 11? }

執(zhí)行結(jié)果:

圖片描述

 

6. 將字符串?dāng)?shù)組拼接為字符串

Go 語(yǔ)言中使用?strings.Join(a ``[]string, ``sep string) string?來(lái)將字符串?dāng)?shù)組,根據(jù)你想要的字符串進(jìn)行拼接成為一個(gè)字符串。

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := []string{"Hello", "Hi"}
  • 10? ? ? ? fmt.Println(strings.Join(str, ","))//使用逗號(hào)拼接字符串
  • 11? }

執(zhí)行結(jié)果:

圖片描述

 

7. 字符串替換

Go 語(yǔ)言中使用?strings.Replace(s, old, new string, n int) string?來(lái)進(jìn)行字符串替換,n<0 時(shí)替換字符串中左右舊字符子串。

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"

  • 5? ? ? ? ? "strings"
  • 6? )
  • 7
  • 8? func main() {
  • 9? ? ? ? ? str := "Hello Codey!"
  • 10? ? ? ? fmt.Println(strings.Replace(str, "Hello", "Hi", -1))//將str中所有Hello替換為Hi
  • 11? }

執(zhí)行結(jié)果:

圖片描述

 

8. 小結(jié)

本文主要介紹了 Go 語(yǔ)言的一個(gè)字符串操作包,這個(gè)包里面還有很多其它對(duì)字符串的操作,有興趣的讀者可以繼續(xù)研究。本文介紹的主要就是些開發(fā)中常用的字符串操作,在我的開發(fā)經(jīng)歷中還是字符串的分割和替換用的最多,大家要注意的是?Go 語(yǔ)言中的字符串是變量,并不是對(duì)象,每次修改完字符串其實(shí)都會(huì)使用一個(gè)新的內(nèi)存,所以在內(nèi)存不充足的場(chǎng)景要慎用字符串操作。

文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!