golang 中strings包的Replace的使用說明
函數(shù)聲明為:
func Replace(s, old, new string, n int) string
官方描述為:
返回將s中前n個(gè)不重疊old子串都替換為new的新字符串,如果n<0會(huì)替換所有old子串。
示例代碼為,每行的結(jié)果見每行上面的注釋部分:
func main() { // non-overlapping: "123" repeat 6 times in s s := "123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l" old := "123" new := "888" fmt.Println("non-overlapping: ") // n < 0 ,用 new 替換所有匹配上的 old;n=-1: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 )) // 不替換任何匹配的 old;n=0: 123lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l fmt.Println("n=0: ", strings.Replace(s, old, new, 0 )) // 用 new 替換第一個(gè)匹配的 old;n=1: 888lafaldsjglad123lkfasdf123djfal123lkdjga123lksjfla123l fmt.Println("n=1: ", strings.Replace(s, old, new, 1 )) // 用 new 替換前 5 個(gè)匹配的 old(實(shí)際多于 5 個(gè));n=5: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla123l fmt.Println("n=5: ", strings.Replace(s, old, new, 5 )) // 用 new 替換前 7 個(gè)匹配上的 old(實(shí)際沒那么多);n=7: 888lafaldsjglad888lkfasdf888djfal888lkdjga888lksjfla888l fmt.Println("n=7: ", strings.Replace(s, old, new, 7 )) // overlapping: s = "888888888888888888" old = "888" new = "666" fmt.Println("overlapping: ") // n < 0 ,用 new 替換所有匹配上的 old;n=-1: 666666666666666666 fmt.Println("n=-1: ", strings.Replace(s, old, new, -1 )) // 不替換任何匹配的 old;n=0: 888888888888888888 fmt.Println("n=0: ", strings.Replace(s, old, new, 0 )) // 用 new 替換第一個(gè)匹配的 old;n=1: 666888888888888888 fmt.Println("n=1: ", strings.Replace(s, old, new, 1 )) // 用 new 替換前 5 個(gè)匹配的 old(實(shí)際多于 5 個(gè));n=5: 666666666666666888 fmt.Println("n=5: ", strings.Replace(s, old, new, 5 )) // 用 new 替換前 7 個(gè)匹配上的 old(實(shí)際沒那么多);n=7: 666666666666666666 fmt.Println("n=7: ", strings.Replace(s, old, new, 7 )) }
補(bǔ)充:golang_字符串操作: strings包中Contains,Join,Index,Repeat,Split,Trim,Fields的用法介紹
字符串處理
Contains
func Contains(s, substr string) bool
判斷字符串s是否包含子串substr。
fmt.Println(strings.Contains("seafood", "foo")) //true
Join
func Join(a []string, sep string) string
將一系列字符串連接為一個(gè)字符串,之間用sep來分隔。
s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) //foo, bar, baz
Index
查找子串的位置
func Index(s, sep string) int
子串sep在字符串s中第一次出現(xiàn)的位置,不存在則返回-1。
fmt.Println(strings.Index("chicken", "ken")) //4 fmt.Println(strings.Index("chicken", "dmr")) //不包含子串返回-1
Repeat
func Repeat(s string, count int) string
返回count個(gè)s串聯(lián)的字符串。
fmt.Println("ba" + strings.Repeat("na", 2)) //banana
Split
以指定的分隔符拆分,返回一組切片
func Split(s, sep string) []string
用去掉s中出現(xiàn)的sep的方式進(jìn)行分割,會(huì)分割到結(jié)尾,并返回生成的所有片段組成的切片(每一個(gè)sep都會(huì)進(jìn)行一次切割,
即使兩個(gè)sep相鄰,也會(huì)進(jìn)行兩次切割)。如果sep為空字符,Split會(huì)將s切分成每一個(gè)unicode碼值一個(gè)字符串。
fmt.Printf("%q\n", strings.Split("a,b,c", ",")) //%q 輸出格式為:帶引號(hào)的字符串 fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a ")) fmt.Printf("%q\n", strings.Split(" xyz ", "")) fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
Output:
["a" "b" "c"] ["" "man " "plan " "canal panama"] [" " "x" "y" "z" " "] [""] //若分隔符在原字符串中不存在,返回原字符串切片
Trim
去掉兩端的字符
func Trim(s string, cutset string) string
返回將s前后端==所有==cutset包含的utf-8碼值都去掉的字符串。
fmt.Println(strings.Trim(" !!! Achtung! Achtung! !!! ", "! ")) // Achtung! Achtung // 會(huì)去掉字符串兩端所有的"!"和" "
Fields
去掉空格,把元素放入切片中
func Fields(s string) []string
返回將字符串按照空白(unicode.IsSpace確定,可以是一到多個(gè)連續(xù)的空白字符)
分割的多個(gè)字符串。如果字符串全部是空白或者是空字符串的話,會(huì)返回空切片。
fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz ")) // Fields are: ["foo" "bar" "baz"]
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
基于go+vue實(shí)現(xiàn)的golang每日新聞數(shù)據(jù)瀏覽與檢索平臺(tái)(推薦)
gonews是基于 go+vue 實(shí)現(xiàn)的golang每日新聞瀏覽與檢索平臺(tái),本文通過實(shí)例代碼給大家講解,介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-01-01Windows下CMD執(zhí)行Go出現(xiàn)中文亂碼的解決方法
本文主要介紹了Windows下CMD執(zhí)行Go出現(xiàn)中文亂碼的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Go語言實(shí)現(xiàn)一個(gè)Http?Server框架(一)?http庫的使用
本文主要介紹用Go語言實(shí)現(xiàn)一個(gè)Http?Server框架中對(duì)http庫的基本使用說明,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以借鑒一下2023-04-04Golang項(xiàng)目搭配nginx部署反向代理負(fù)載均衡講解
這篇文章主要為大家介紹了Golang項(xiàng)目搭配nginx部署正反向代理負(fù)載均衡講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04如何在golang中使用shopspring/decimal來處理精度問題
本文主要介紹了如何在golang中使用shopspring/decimal來處理精度問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Go語言中時(shí)間time相關(guān)處理方法詳解
在Go語言中,time?包是處理時(shí)間和日期的核心,它提供了豐富的函數(shù)和方法,用于顯示、測(cè)量、計(jì)算、格式化、解析時(shí)間等,本文給大家詳細(xì)介紹了Go時(shí)間time相關(guān)處理方法的相關(guān)資料,需要的朋友可以參考下2024-10-10Go語言題解LeetCode705設(shè)計(jì)哈希集合
這篇文章主要為大家介紹了Go語言題解LeetCode705設(shè)計(jì)哈希集合,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Golang利用位運(yùn)算實(shí)現(xiàn)為程序加速
這篇文章主要為大家詳細(xì)介紹了如何在Golang中利用位運(yùn)算實(shí)現(xiàn)為程序加速功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-08-08