欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go中strings包的基本使用示例代碼

 更新時(shí)間:2024年10月21日 10:12:35   作者:海綿寶寶de派小星  
本文詳細(xì)介紹了Go語言中strings包的基本使用方法,包括字符串的前綴、后綴判斷,字符串包含、索引查找、字符串替換、計(jì)數(shù)、重復(fù)、大小寫轉(zhuǎn)換、修剪、分割、拼接以及數(shù)據(jù)類型轉(zhuǎn)換等功能,示例代碼豐富,適合初學(xué)者和需要使用字符串處理功能的開發(fā)者參考學(xué)習(xí)

本篇主要總結(jié)的是go中的string包的一些函數(shù)的操作講解

string

在各個(gè)語言中,都有對(duì)應(yīng)的處理字符串的包,在go中是使用strings來處理的

前綴和后綴

HasPrefix() 判斷字符串 s 是否以 prefix 開頭:

strings.HasPrefix(s, prefix string) bool

HasSuffix() 判斷字符串 s 是否以 suffix 結(jié)尾:

strings.HasSuffix(s, suffix string) bool

示例代碼

func test1() {
	fmt.Println(strings.HasPrefix("this is string", "this"))
	fmt.Println(strings.HasPrefix("this is string", "1this"))
	fmt.Println(strings.HasSuffix("this is string", "ing"))
	fmt.Println(strings.HasSuffix("this is string", "iing"))
}

字符串包含

Contains() 判斷字符串 s 是否包含 substr:

strings.Contains(s, substr string) bool

示例代碼

func test2() {
	totalString := "hello go, i love cpp"
	containString1 := "go"
	containString2 := "cpp"
	containString3 := "java"
	fmt.Printf("\"%s\" contain in \"%s\"? the ans is %t\n", containString1, totalString, strings.Contains(totalString, containString1))
	fmt.Printf("\"%s\" contain in \"%s\"? the ans is %t\n", containString2, totalString, strings.Contains(totalString, containString2))
	fmt.Printf("\"%s\" contain in \"%s\"? the ans is %t\n", containString3, totalString, strings.Contains(totalString, containString3))
}

這里順便溫習(xí)一下對(duì)于Go中轉(zhuǎn)義字符的使用

判斷子字符串或字符在父字符串中出現(xiàn)的位置

Index() 返回字符串 str 在字符串 s 中的索引(str 的第一個(gè)字符的索引),-1 表示字符串 s 不包含字符串 str:

strings.Index(s, str string) int

LastIndex() 返回字符串 str 在字符串 s 中最后出現(xiàn)位置的索引(str 的第一個(gè)字符的索引),-1 表示字符串 s 不包含字符串 str:

strings.LastIndex(s, str string) int

示例代碼:

func test3() {
	totalString := "hello go, i love cpp, i love cpp and go"
	containString1 := "go"
	containString2 := "cpp"
	containString3 := "java"
	fmt.Println("first index demo is:")
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString1, totalString, strings.Index(totalString, containString1))
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString2, totalString, strings.Index(totalString, containString2))
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString3, totalString, strings.Index(totalString, containString3))
	fmt.Println("last index demo is:")
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString1, totalString, strings.LastIndex(totalString, containString1))
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString2, totalString, strings.LastIndex(totalString, containString2))
	fmt.Printf("\"%s\" first index in \"%s\" is %d\n", containString3, totalString, strings.LastIndex(totalString, containString3))
}

運(yùn)行結(jié)果為:

first index demo is:
"go" first index in "hello go, i love cpp, i love cpp and go" is 6
"cpp" first index in "hello go, i love cpp, i love cpp and go" is 17
"java" first index in "hello go, i love cpp, i love cpp and go" is -1
last index demo is:
"go" first index in "hello go, i love cpp, i love cpp and go" is 37
"cpp" first index in "hello go, i love cpp, i love cpp and go" is 29
"java" first index in "hello go, i love cpp, i love cpp and go" is -1

如果需要查詢非 ASCII 編碼的字符在父字符串中的位置,建議使用以下函數(shù)來對(duì)字符進(jìn)行定位:

strings.IndexRune(s string, r rune) int

字符串替換

Replace() 用于將字符串 str 中的前 n 個(gè)字符串 old 替換為字符串 new,并返回一個(gè)新的字符串,如果 n = -1 則替換所有字符串 old 為字符串 new:

strings.Replace(str, old, new string, n int) string

示例代碼

func test4() {
	str1 := "hello hello hello hello hello hello"
	str2 := strings.Replace(str1, "hello", "no", -1)
	fmt.Println(str2)
}

這個(gè)函數(shù)的意思就是只要識(shí)別到有可以替換的字符串,并且對(duì)于最后一個(gè)數(shù)字嗯,并沒有超過所限制的數(shù)量,那么就會(huì)將這個(gè)識(shí)別道德字符串替換為想要替換成的字符串,比如在這個(gè)例子當(dāng)中當(dāng)識(shí)別到字符串中含有哈嘍,這個(gè)單詞是就會(huì)將hello替換成no,前提是沒有超過-1的限制,而因?yàn)?1的意思是,只要有字符串就進(jìn)行替換,那么就會(huì)整個(gè)將這個(gè)字符串當(dāng)中所有含有hello的字符串都替換為no

統(tǒng)計(jì)字符串出現(xiàn)次數(shù)

Count() 用于計(jì)算字符串 str 在字符串 s 中出現(xiàn)的非重疊次數(shù):

strings.Count(s, str string) int

示例代碼

func test5() {
	str1 := "hello world hello world hellhello world"
	fmt.Println(strings.Count(str1, "hello"))
	fmt.Println(strings.Count(str1, "world"))
}

重復(fù)字符串

Repeat() 用于重復(fù) count 次字符串 s 并返回一個(gè)新的字符串:

strings.Repeat(s, count int) string

示例代碼

func test6() {
	str := "hello go"
	fmt.Println(strings.Repeat(str, 10))
	fmt.Println(strings.Repeat(str, 2))
}

修改字符串大小寫

ToLower() 將字符串中的 Unicode 字符全部轉(zhuǎn)換為相應(yīng)的小寫字符:

strings.ToLower(s) string

ToUpper() 將字符串中的 Unicode 字符全部轉(zhuǎn)換為相應(yīng)的大寫字符:

strings.ToUpper(s) string

示例代碼

func test7() {
	str := "hello World This is TEST"
	fmt.Println(strings.ToLower(str))
	fmt.Println(strings.ToUpper(str))
}

修剪字符串

你可以使用 strings.TrimSpace(s) 來剔除字符串開頭和結(jié)尾的空白符號(hào);如果你想要剔除指定字符,則可以使用 strings.Trim(s, “cut”) 來將開頭和結(jié)尾的 cut 去除掉。該函數(shù)的第二個(gè)參數(shù)可以包含任何字符,如果你只想剔除開頭或者結(jié)尾的字符串,則可以使用 TrimLeft() 或者 TrimRight() 來實(shí)現(xiàn)。

示例代碼

func test8() {
	str1 := "11hello world111"
	str2 := "  hello go    "
	fmt.Println("去除空白")
	fmt.Println(strings.TrimSpace(str1))
	fmt.Println(strings.TrimSpace(str2))
	fmt.Println("去除左側(cè)空白")
	fmt.Println(strings.TrimLeft(str2, " "))
	fmt.Println("去除左側(cè)字符1")
	fmt.Println(strings.TrimLeft(str1, "1"))
	fmt.Println("去除右側(cè)字符1")
	fmt.Println(strings.TrimRight(str1, "1"))
	fmt.Println("去除左右兩側(cè)1")
	fmt.Println(strings.Trim(str1, "1"))
}

分割字符串

strings.Fields(s) 將會(huì)利用 1 個(gè)或多個(gè)空白符號(hào)來作為動(dòng)態(tài)長(zhǎng)度的分隔符將字符串分割成若干小塊,并返回一個(gè) slice,如果字符串只包含空白符號(hào),則返回一個(gè)長(zhǎng)度為 0 的 slice。

strings.Split(s, sep) 用于自定義分割符號(hào)來對(duì)指定字符串進(jìn)行分割,同樣返回 slice。

因?yàn)檫@ 2 個(gè)函數(shù)都會(huì)返回 slice,所以習(xí)慣使用 for-range 循環(huán)來對(duì)其進(jìn)行處理

示例代碼

func test9() {
	str1 := "hello1 hello2 hello3      hello4"
	fmt.Println("以一個(gè)空格為分隔符")
	s1 := strings.Split(str1, " ")
	for _, t := range s1 {
		fmt.Println(t)
	}
	fmt.Println("以一個(gè)或多個(gè)空格為分隔符")
	s2 := strings.Fields(str1)
	for _, t := range s2 {
		fmt.Println(t)
	}
	str3 := "hello11hello22hello321321312hello4"
	fmt.Println("以hello為分隔符")
	s3 := strings.Split(str3, "hello")
	for _, t := range s3 {
		fmt.Println(t)
	}
}

拼接 slice 到字符串

Join() 用于將元素類型為 string 的 slice 使用分割符號(hào)來拼接組成一個(gè)字符串:

strings.Join(sl []string, sep string) string

示例代碼

func test10() {
	// 定義一個(gè)字符串切片
	sl := []string{"apple", "banana", "cherry"}
	// 使用空格作為分隔符拼接切片中的字符串
	result := strings.Join(sl, " ")
	fmt.Println(result) // 輸出 "apple banana cherry"
	// 使用逗號(hào)和空格作為分隔符拼接切片中的字符串
	result2 := strings.Join(sl, ", ")
	fmt.Println(result2) // 輸出 "apple, banana, cherry"
}

strconv

string類型的數(shù)據(jù)和其他類型的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,實(shí)際上是借助這個(gè)包來完成的

這里只講述最基本的內(nèi)容,其他的內(nèi)容之后再進(jìn)行講解

示例代碼:

func test11() {
	str1 := "666"
	number, _ := strconv.Atoi(str1)
	fmt.Println(number)
	fmt.Println(strconv.Itoa(number + 5))
}

到此這篇關(guān)于Go:strings包的基本使用的文章就介紹到這了,更多相關(guān)Go strings包使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang Map value不可尋址使用指針類型代替示例詳解

    Golang Map value不可尋址使用指針類型代替示例詳解

    這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 探索Go語言中的switch高級(jí)用法

    探索Go語言中的switch高級(jí)用法

    在Go語言中,switch語句除了常見的用法外,還有一種不常用但有趣的寫法,這種寫法中,switch后面不跟任何表達(dá)式,而每個(gè)case后面跟的是返回bool類型的函數(shù)調(diào)用表達(dá)式,這實(shí)際上是一個(gè)等價(jià)于switch true的用法,通過從上到下逐一比較case后的表達(dá)式是否為true來決定執(zhí)行哪個(gè)分支
    2024-10-10
  • Go語言編程實(shí)現(xiàn)支持六種級(jí)別的日志庫?

    Go語言編程實(shí)現(xiàn)支持六種級(jí)別的日志庫?

    這篇文章主要為大家介紹了使用Golang編寫一個(gè)支持六種級(jí)別的日志庫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Golang CSP并發(fā)機(jī)制及使用模型

    Golang CSP并發(fā)機(jī)制及使用模型

    這篇文章主要為大家介紹了Golang CSP并發(fā)機(jī)制及使用模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Golang通脈之map詳情

    Golang通脈之map詳情

    這篇文章主要介紹了Golang通脈之map,Go語言中提供的映射關(guān)系容器為map,其內(nèi)部使用散列表(hash)實(shí)現(xiàn),map 是一種無序的鍵值對(duì)的集合。map 最重要的一點(diǎn)是通過 key 來快速檢索數(shù)據(jù),key 類似于索引,指向數(shù)據(jù)的值 map 是一種集合,所以可以像迭代數(shù)組和切片那樣迭代它
    2021-10-10
  • 快速掌握Go語言正/反向代理

    快速掌握Go語言正/反向代理

    這篇文章主要介紹了快速掌握Go語言正/反向代理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • golang連接池檢查連接失敗時(shí)如何重試(示例代碼)

    golang連接池檢查連接失敗時(shí)如何重試(示例代碼)

    在Go中,可以通過使用database/sql包的DB類型的Ping方法來檢查數(shù)據(jù)庫連接的可用性,本文通過示例代碼,演示了如何在連接檢查失敗時(shí)進(jìn)行重試,感興趣的朋友一起看看吧
    2023-10-10
  • golang中的并發(fā)和并行

    golang中的并發(fā)和并行

    這篇文章主要介紹了golang中的并發(fā)和并行用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 一文詳解Golang中字符串的常見錯(cuò)誤

    一文詳解Golang中字符串的常見錯(cuò)誤

    這篇文章主要來和大家深入討論一下Golang?中的字符串,并查看一些不同的場(chǎng)景,以避免常見錯(cuò)誤,對(duì)大家掌握golang有一定的幫助,需要的可以了解下
    2023-10-10
  • Golang字符串常用函數(shù)的使用

    Golang字符串常用函數(shù)的使用

    Golang提供了許多內(nèi)置的字符串函數(shù),這些函數(shù)可在處理字符串?dāng)?shù)據(jù)時(shí)幫助執(zhí)行一些操作,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論