一文帶你了解Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)strings的常用函數(shù)和方法
strings 庫(kù)
strings 庫(kù)包含了許多高效的字符串常用操作的函數(shù)和方法,巧用這些函數(shù)與方法,能極大的提高我們程序的性能。下面介紹一些常用的函數(shù)和方法。
高效拼接字符串
使用 strings 庫(kù)里的 Builder 變量,結(jié)合其寫(xiě)入方法如 WriteString 方法,可以進(jìn)行高效的拼接字符串。
import (
"strings"
)
func main() {
var builder strings.Builder
builder.WriteString("hello")
builder.WriteString(" ")
builder.WriteString("world")
builder.WriteString("!")
s := builder.String()
println(s) // hello world!
}strings.Builder 底層是通過(guò)其內(nèi)部的 slice 來(lái)儲(chǔ)存內(nèi)容的。當(dāng)調(diào)用其相關(guān)的寫(xiě)入方法(如 WriteString )的時(shí),新的字節(jié)數(shù)據(jù)就會(huì)被追加到 slice 上。相比普通字符串的多次拼接,減少了拼接時(shí)需要?jiǎng)?chuàng)建新字符串的內(nèi)存開(kāi)銷(xiāo)。
大小寫(xiě)轉(zhuǎn)換
小寫(xiě)轉(zhuǎn)大寫(xiě)
ToUpper(s string) string:將一個(gè)字符串里的小寫(xiě)字符轉(zhuǎn)成大寫(xiě),因?yàn)樽址豢勺兊奶攸c(diǎn),該函數(shù)會(huì)返回一個(gè)新的字符串。
import "strings"
func main() {
s1 := "hello"
s2 := strings.ToUpper(s1)
println(s2) // HELLO
}大寫(xiě)轉(zhuǎn)小寫(xiě)
ToLower(s string) string:將一個(gè)字符串里的大寫(xiě)字符轉(zhuǎn)成小寫(xiě),因?yàn)樽址豢勺兊奶攸c(diǎn),該函數(shù)會(huì)返回一個(gè)新的字符串。
import "strings"
func main() {
s1 := "HELLO"
s2 := strings.ToLower(s1)
println(s2) // hello
}比較兩個(gè)字符串
區(qū)分大小寫(xiě)比較
func main() {
s1 := "hello"
s2 := "hello"
s3 := "HELLO"
println(s1 == s2) // true
println(s1 == s3) // false
}直接通過(guò) == 操作符進(jìn)行區(qū)分大小寫(xiě)的字符串比較即可。
不區(qū)分大小寫(xiě)比較 使用 EqualFold(s, t string) bool 函數(shù)進(jìn)行比較,兩個(gè)參數(shù)為需要比較的兩個(gè)字符串,返回值為布爾值,如果是 true 說(shuō)明字符串相等,反之 false 則字符串不相等。
func main() {
s1 := "hello"
s2 := "hello"
s3 := "HELLO"
isEual := strings.EqualFold(s1, s2)
println(isEual) // true
isEual2 := strings.EqualFold(s1, s3)
println(isEual2) // true
}字符串的替換
字符串替換的函數(shù):Replace(s, old, new string, n int) string
- 第一個(gè)參數(shù)
s為原字符串。 - 第二個(gè)參數(shù)
old為需要替換的字符串。 - 第三個(gè)參數(shù)
new為替換后的字符串。 - 第四個(gè)參數(shù)
n為指定替換幾個(gè)old,如果n小于 0,則替換全部。 - 返回值為替換后的新字符串。
案例:實(shí)現(xiàn)對(duì)敏感詞的替換
func main() {
s1 := "我靠啊靠"
s2 := strings.Replace(s1, "靠", "*", 1)
println(s2) // true 我*啊靠
s3 := "我靠啊靠"
s4 := strings.Replace(s3, "靠", "*", -1)
println(s4) // true 我*啊*
}第一次替換時(shí),n 指定為 1,因此只替換了一個(gè)敏感詞。 第二次替換時(shí),n 指定為 -1,小于 0,因此將所有敏感詞都替換了。
按照某個(gè)分割標(biāo)識(shí)分割字符串
分割字符串的函數(shù):Split(s, sep string) []string
- 第一個(gè)參數(shù)
s為需要分割的字符串。 - 第二個(gè)參數(shù)
sep為分割的標(biāo)識(shí)。 - 返回值為字符串切片,保存被分割出來(lái)的子字符串。
import (
"fmt"
"strings"
)
func main() {
s1 := "golang-is-awesome"
strSlice := strings.Split(s1, "-")
fmt.Println(strSlice) // [golang is awesome]
}去掉字符串左右兩邊的空格
函數(shù):TrimSpace(s string) string
- 第一個(gè)參數(shù)
s為需要去除空格的字符串。 - 返回值為去除空格后的新字符串。
import (
"strings"
)
func main() {
s1 := " golang is awesome "
s2 := strings.TrimSpace(s1)
println(s2) // "golang is awesome"
}將字符串[左邊]或[右邊]或[左右兩邊]所指定的字符(串)去掉
將字符串[左右兩邊]所指定的字符(串)去掉
函數(shù):Trim(s, cutset string) string
import (
"strings"
)
func main() {
s1 := "-golang is awesome-"
s2 := strings.Trim(s1, "-")
println(s2) // "golang is awesome"
}第一個(gè)參數(shù) s 為需要去除指定字符的字符串。
第二個(gè)參數(shù)為指定的字符(串)。
將字符串[左邊]所指定的字符(串)去掉
函數(shù):TrimLeft(s, cutset string) string
import (
"strings"
)
func main() {
s1 := "-golang is awesome"
s2 := strings.TrimLeft(s1, "-")
println(s2) // "golang is awesome"
}第一個(gè)參數(shù) s 為需要去除指定字符的字符串。
第二個(gè)參數(shù)為指定的字符(串)。
將字符串[右邊]所指定的字符(串)去掉
函數(shù):TrimRight(s, cutset string) string
import (
"strings"
)
func main() {
s1 := "golang is awesome-"
s2 := strings.TrimRight(s1, "-")
println(s2) // "golang is awesome"
}第一個(gè)參數(shù) s 為需要去除指定字符的字符串。
第二個(gè)參數(shù)為指定的字符(串)。
判斷字符串是否以指定的字符串開(kāi)頭
函數(shù):HasPrefix(s, prefix string) bool
- 第一個(gè)參數(shù)
s為被判斷字符串。 - 第二個(gè)參數(shù)
prefix為指定的字符串。
import (
"strings"
)
func main() {
s1 := "hello world!"
flag := strings.HasPrefix(s1, "hello")
println(flag) // true
}判斷字符串是否以指定的字符串結(jié)束
函數(shù):HasSuffix(s, prefix string) bool
- 第一個(gè)參數(shù)
s為被判斷字符串。 - 第二個(gè)參數(shù)
prefix為指定的字符串。
import (
"strings"
)
func main() {
s1 := "hello world!"
flag := strings.HasSuffix(s1, "!")
println(flag) // true
}將字符串切片中的元素以指定字符串連接生成新字符串
函數(shù):Join(elems []string, sep string) string
- 第一個(gè)參數(shù)
elems為字符串切片。 - 第二個(gè)參數(shù)
sep為連接符。 - 返回值為新的字符串。
import (
"strings"
)
func main() {
strSlice := []string{"golang", "is", "awesome"}
s := strings.Join(strSlice, "-")
println(s) // golang-is-awesome
}查找子串是否存在于指定的字符串中
函數(shù): Contains(s, substr string) bool
- 第一個(gè)參數(shù)
s為指定的字符串。 - 第二個(gè)參數(shù)
substr為子串。 - 返回值為布爾值,如果是
true說(shuō)明存在,反之false則不存在。
import (
"strings"
)
func main() {
s := "golang is awesome"
isContains := strings.Contains(s, "golang")
println(isContains) // true
}小結(jié)
本文先對(duì) strings 標(biāo)準(zhǔn)庫(kù)里的 Builder 變量進(jìn)行介紹,使用其寫(xiě)入方法可以高效地拼接字符串,然后對(duì) ToUpper、ToLower、Replace 等常用函數(shù)的參數(shù)和返回值以及用法進(jìn)行介紹。
到此這篇關(guān)于一文帶你了解Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)strings的常用函數(shù)和方法的文章就介紹到這了,更多相關(guān)Go語(yǔ)言strings內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言安裝和GoLand2021最全超詳細(xì)安裝教程
Go語(yǔ)言和GoLand的關(guān)系好比于java和idea、python和pycharm,因此我們需要先安裝好Go語(yǔ)言后才能安裝GoLand。它的安裝和java,python的安裝大同小異,好了,下面給大家?guī)?lái)了GoLand2021安裝教程,需要的朋友參考下吧2021-08-08
Golang實(shí)現(xiàn)簡(jiǎn)易的rpc調(diào)用
RPC指(Remote Procedure Call Protocol)遠(yuǎn)程過(guò)程調(diào)用協(xié)議。本文將實(shí)現(xiàn)利用Golang進(jìn)行rpc調(diào)用(只實(shí)現(xiàn)一個(gè)rpc框架基本的功能,不對(duì)性能做保證),需要的可以參考一下2023-03-03
Go語(yǔ)言的代碼組織結(jié)構(gòu)詳細(xì)介紹
這篇文章主要介紹了Go語(yǔ)言的代碼碼組織結(jié)構(gòu)詳細(xì)介紹,即Go語(yǔ)言源碼的文件結(jié)構(gòu),本文講解了包、main和main.main、os包等內(nèi)容,需要的朋友可以參考下2014-10-10
Mango?Cache緩存管理庫(kù)TinyLFU源碼解析
這篇文章主要為大家介紹了Mango?Cache緩存管理庫(kù)TinyLFU源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
grom設(shè)置全局日志實(shí)現(xiàn)執(zhí)行并打印sql語(yǔ)句
本文主要介紹了grom設(shè)置全局日志實(shí)現(xiàn)執(zhí)行并打印sql語(yǔ)句,包括設(shè)置日志級(jí)別、實(shí)現(xiàn)自定義Logger接口以及如何使用GORM的默認(rèn)logger,通過(guò)這些方法,可以更好地控制和記錄數(shù)據(jù)庫(kù)操作的日志信息2025-03-03
wind10 idea中 go 開(kāi)發(fā)環(huán)境搭建教程圖解
這篇文章主要介紹了wind10 idea中 go 開(kāi)發(fā)環(huán)境搭建過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
go內(nèi)存緩存BigCache封裝Entry源碼解讀
這篇文章主要為大家介紹了go內(nèi)存緩存BigCache封裝Entry源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

