最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言字符串處理庫(kù)strings包詳解

 更新時(shí)間:2024年09月29日 14:23:48   作者:景天科技苑  
本文詳細(xì)介紹了Go語(yǔ)言中的strings庫(kù)的使用方法,包括字符串的查找、替換、分割、比較、大小寫(xiě)轉(zhuǎn)換等操作,strings庫(kù)是Go語(yǔ)言中非常重要且功能豐富的標(biāo)準(zhǔn)庫(kù),幾乎涵蓋了所有字符串處理的需求

Golang字符串處理庫(kù)strings

在Go語(yǔ)言中,strings包是一個(gè)非常重要且功能豐富的標(biāo)準(zhǔn)庫(kù),它提供了一系列用于操作字符串的函數(shù)。從基本的字符串查找、替換、分割到高級(jí)的比較、格式化等,strings包幾乎涵蓋了所有字符串處理的需求。

1. 導(dǎo)入strings包

在Go程序中,使用strings包之前需要先導(dǎo)入它。導(dǎo)入語(yǔ)句如下:
import “strings”

2. 字符串的查找

1. 判斷字符串是否包含子串

strings.Contains(s, substr string) bool 函數(shù)用于判斷字符串s是否包含子串substr,如果包含則返回true,否則返回false。

示例代碼:

package main
import (
    "fmt"
    "strings"
)
func main() {
    str := "Hello, World!"
    substr := "Hello"
    fmt.Println(strings.Contains(str, substr)) // 輸出: true
}

2. 判斷某個(gè)字符串是否包含了多個(gè)字符串中的某一個(gè)

ContainsAny函數(shù)用于檢查字符串s是否包含字符串chars中的任何Unicode碼點(diǎn)。如果包含,則返回true;否則返回false。只要包含一個(gè)就返回true

str := "jingtian,大俠"
fmt.Println(strings.ContainsAny(str, "z大"))
都不包含返回false
fmt.Println(strings.ContainsAny(str, "z大"))

3. 字符串計(jì)數(shù)

Count(s, substr string) int 方法返回字符串s中包含子串substr的個(gè)數(shù)。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    s := "hello world, world"  
    fmt.Println(strings.Count(s, "world")) // 輸出: 2  
}

4. 查找子串在字符串中第一次出現(xiàn)的位置

strings.Index(s, substr string) int函數(shù)用于查找子串substr在字符串s中首次出現(xiàn)的位置(索引從0開(kāi)始),如果未找到則返回-1。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    // 有兩個(gè)World,查出第一個(gè)World的第一個(gè)字母出現(xiàn)的位置
    str := "Hello, World! World"  
    substr := "World"  
    index := strings.Index(str, substr)  
    fmt.Println(index) // 輸出: 7  
}

5. 查找子串最后一次出現(xiàn)的位置

strings.LastIndex(s, substr string) int函數(shù)與Index類(lèi)似,但它查找的是子串substr在字符串s中最后一次出現(xiàn)的位置。
查的是字符串最后一次首字母出現(xiàn)的位置

示例代碼:

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, Hello, World!"  
    substr := "Hello"  
    lastIndex := strings.LastIndex(str, substr)  
    fmt.Println(lastIndex) // 輸出: 7   查的是字符串最后一次首字母出現(xiàn)的位置
}

6. 判斷字符串是否以指定前綴或后綴開(kāi)頭/結(jié)尾

strings.HasPrefix(s, prefix string) bool和strings.HasSuffix(s, suffix string) bool函數(shù)分別用于判斷字符串s是否以指定的前綴prefix或后綴suffix開(kāi)頭/結(jié)尾。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, World!"  
    fmt.Println(strings.HasPrefix(str, "Hello")) // 輸出: true  
    fmt.Println(strings.HasSuffix(str, "World!")) // 輸出: true  
}

7. 字符串的替換

替換字符串中的子串
strings.Replace(s, old, new string, n int) string函數(shù)用于將字符串s中的old子串替換為new子串,n表示替換的次數(shù)。如果n為小于0,則表示替換所有匹配的子串。
n必須寫(xiě),沒(méi)有默認(rèn)值

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, World!"  
    oldSubstr := "Hello"  
    newSubstr := "Hi"  
    newStr := strings.Replace(str, oldSubstr, newSubstr, 1)  
    fmt.Println(newStr) // 輸出: Hi, World!  
    // 替換所有匹配的子串  
    newStrAll := strings.Replace(str, "o", "a", -1)  
    fmt.Println(newStrAll) // 輸出: Hella, Warld!  
}

ReplaceAll
從Go 1.12版本開(kāi)始,strings包引入了ReplaceAll函數(shù),用于替換字符串s中所有的old子串為new。
func ReplaceAll(s, old, new string) string

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, World! Hello, Go!"  
    newStr := strings.ReplaceAll(str, "Hello", "Hi")  
    fmt.Println(newStr) // 輸出: Hi, World! Hi, Go!  
}

8. 字符串的分割

將字符串分割成切片
strings.Split(s, sep string) []string函數(shù)用于將字符串s按照指定的分隔符sep進(jìn)行分割,并返回一個(gè)字符串切片。
如果sep為空字符串,或者一個(gè)找不到的分隔符,則會(huì)將字符串s切分成單個(gè)字符的切片。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, World!"  
    sep := ", "  
    //以逗號(hào)空格作為切割符
    strs := strings.Split(str, sep)  
    fmt.Println(strs) // 輸出: [Hello World!]  
    // 使用空字符串作為分隔符  
    strsEmpty := strings.Split(str, "")  
    fmt.Println(strsEmpty) // 輸出: [H e l l o ,   W o r l d !]  
}

9. 字符串的連接

將切片中的字符串連接起來(lái)
strings.Join(a []string, sep string) string函數(shù)用于將字符串切片a中的字符串使用指定的分隔符sep連接起來(lái),并返回連接后的字符串。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    //字符串拼接,數(shù)組不能拼接,只能拼接切片
    strs := []string{"Hello", "World!"}  
    sep := ", "  
    joinedStr := strings.Join(strs, sep)  
    fmt.Println(joinedStr) // 輸出: Hello, World!  
}

10. 字符串比較

雖然strings包本身不直接提供字符串比較的函數(shù)(因?yàn)镚o語(yǔ)言的==和!=操作符已經(jīng)足夠用于比較字符串),但了解如何比較字符串并理解其背后的機(jī)制是很重要的。特別是當(dāng)涉及到比較時(shí)區(qū)分大小寫(xiě)或不區(qū)分大小寫(xiě)時(shí)。

  • 區(qū)分大小寫(xiě)比較:直接使用==和!=。
  • 不區(qū)分大小寫(xiě)比較:可以使用strings.EqualFold方法。
package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    s1 := "Hello, Go!"  
    s2 := "hello, go!"  
    s3 := "Hello, Go!"  
    // 區(qū)分大小寫(xiě)比較  
    fmt.Println(s1 == s2) // 輸出: false  
    fmt.Println(s1 == s3) // 輸出: true  
    // 不區(qū)分大小寫(xiě)比較  
    fmt.Println(strings.EqualFold(s1, s2)) // 輸出: true  
}

11. 字符串的大小寫(xiě)轉(zhuǎn)換

strings.ToUpper(s string) string和strings.ToLower(s string) string函數(shù)分別用于將字符串s中的所有字符轉(zhuǎn)換為大寫(xiě)或小寫(xiě)。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "Hello, World!"  
    upperStr := strings.ToUpper(str)  
    lowerStr := strings.ToLower(str)  
    fmt.Println(upperStr) // 輸出: HELLO, WORLD!  
    fmt.Println(lowerStr) // 輸出: hello, world!  
}

12. 去除字符串首尾的空白字符

strings.TrimSpace(s string) string函數(shù)用于去除字符串s開(kāi)頭和結(jié)尾的空白字符(如空格、換行符等)。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := " Hello, World! "  
    trimmedStr := strings.TrimSpace(str)  
    fmt.Println(trimmedStr) // 輸出: Hello, World!  
}

13. 去除字符串首尾指定的字符

strings.Trim(s, cutset string) string函數(shù)用于去除字符串s開(kāi)頭和結(jié)尾由cutset指定的字符。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    str := "!!!Hello, World!!!"  
    trimmedStr := strings.Trim(str, "! ")  
    fmt.Println(trimmedStr) // 輸出: Hello, World  
}

14. 字符串的重復(fù)

Repeat(s string, count int) string方法將字符串s重復(fù)count次,并返回結(jié)果字符串。

package main  
import (  
    "fmt"  
    "strings"  
)  
func main() {  
    s := "Go!"  
    repeated := strings.Repeat(s, 3)  
    fmt.Println(repeated) // 輸出: Go!Go!Go!  
}

15. 字符串提取

可以通過(guò)字符串下標(biāo)提取想要的字符串范圍,取單個(gè)得到的是uint8的ASIIC嗎數(shù)字,取多個(gè)得到的是字符串

str := "Hello, World! Hello, Go!"
fmt.Println(str[0:5])        //Hello
fmt.Printf("%T\n", str[0:5]) //string
fmt.Printf("%T\n", str[0])   //uint8
//單個(gè)字符可以通過(guò)string轉(zhuǎn)化為字符串
fmt.Println(string(str[0]))   //H

strings包還有很多方法,我們可以自己點(diǎn)一下看看
看源碼,看這個(gè)函數(shù)如何使用

到此這篇關(guān)于Go語(yǔ)言字符串處理庫(kù)--strings的文章就介紹到這了,更多相關(guān)Go字符串處理庫(kù)strings內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言的分布式事務(wù)處理

    Go語(yǔ)言的分布式事務(wù)處理

    本文介紹了分布式系統(tǒng)中事務(wù)處理面臨的挑戰(zhàn),包括網(wǎng)絡(luò)延遲、節(jié)點(diǎn)故障等問(wèn)題,并詳細(xì)探索了常見(jiàn)的分布式事務(wù)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • Go語(yǔ)言中切片使用的注意事項(xiàng)小結(jié)

    Go語(yǔ)言中切片使用的注意事項(xiàng)小結(jié)

    切片是引用類(lèi)型,相信對(duì)大家來(lái)說(shuō)都不陌生,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Go語(yǔ)言中切片使用的一些注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • golang 數(shù)組去重,利用map的實(shí)現(xiàn)

    golang 數(shù)組去重,利用map的實(shí)現(xiàn)

    這篇文章主要介紹了golang 數(shù)組去重,利用map的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • windows下使用GoLand生成proto文件的方法步驟

    windows下使用GoLand生成proto文件的方法步驟

    本文主要介紹了windows下使用GoLand生成proto文件的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 詳解Go語(yǔ)言的內(nèi)存模型及堆的分配管理

    詳解Go語(yǔ)言的內(nèi)存模型及堆的分配管理

    這篇筆記主要介紹Go內(nèi)存分配和Go內(nèi)存管理,會(huì)輕微涉及內(nèi)存申請(qǐng)和釋放,以及Go垃圾回收,文中有詳細(xì)的代碼示例以及圖片介紹,需要的朋友可以參考下
    2023-05-05
  • GO語(yǔ)言實(shí)現(xiàn)AES-CFB加密的操作方法

    GO語(yǔ)言實(shí)現(xiàn)AES-CFB加密的操作方法

    本文介紹了如何用Go語(yǔ)言實(shí)現(xiàn)AES-CFB加密和解密,首先,定義一個(gè)屬于encrypt包的文件,使用AES算法、CFB模式和Base64編碼等功能,在加密函數(shù)中,接收明文和密鑰,生成一個(gè)AES塊密碼和一個(gè)隨機(jī)的初始化向量,實(shí)現(xiàn)明文的加密
    2024-10-10
  • Go語(yǔ)言使用MongoDB數(shù)據(jù)庫(kù)詳細(xì)步驟

    Go語(yǔ)言使用MongoDB數(shù)據(jù)庫(kù)詳細(xì)步驟

    mongodb是一種高性能、開(kāi)源、文檔型的nosql數(shù)據(jù)庫(kù),被廣泛應(yīng)用于web應(yīng)用、大數(shù)據(jù)以及云計(jì)算領(lǐng)域,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言使用MongoDB數(shù)據(jù)庫(kù)的詳細(xì)步驟,需要的朋友可以參考下
    2024-05-05
  • GoLand無(wú)法Debug問(wèn)題的解決辦法

    GoLand無(wú)法Debug問(wèn)題的解決辦法

    今天突然要寫(xiě)下go代碼的項(xiàng)目,突然發(fā)現(xiàn)無(wú)法debug,下面這篇文章主要介紹了GoLand無(wú)法Debug問(wèn)題的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-10-10
  • Go雪花算法的作用領(lǐng)域及實(shí)現(xiàn)方法示例

    Go雪花算法的作用領(lǐng)域及實(shí)現(xiàn)方法示例

    這篇文章主要為大家介紹了Go雪花算法的作用領(lǐng)域及實(shí)現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語(yǔ)言時(shí)間處理必備技巧全解析

    Go語(yǔ)言時(shí)間處理必備技巧全解析

    Golang 的時(shí)間處理是 Golang 編程中的一個(gè)重要方面,它涉及到了時(shí)間類(lèi)型、時(shí)間格式化、時(shí)間計(jì)算、時(shí)區(qū)處理以及定時(shí)器和超時(shí)機(jī)制等多個(gè)方面。在本文中,我們將從更深入的角度來(lái)探討 Golang 的時(shí)間處理
    2023-04-04

最新評(píng)論

合江县| 阿拉善左旗| 民权县| 莫力| 丹江口市| 桃园市| 宁夏| 扶沟县| 阿瓦提县| 克什克腾旗| 城固县| 嘉禾县| 兴宁市| 崇左市| 石渠县| 图木舒克市| 朝阳区| 阿坝| 关岭| 凤庆县| 唐河县| 东乡县| 托克逊县| 莱西市| 灵璧县| 房产| 彝良县| 农安县| 沁阳市| 双柏县| 郴州市| 翁源县| 怀仁县| 五常市| 阿坝县| 大理市| 大姚县| 渭南市| 纳雍县| 都江堰市| 伊金霍洛旗|