第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Strings.Replacer:如何一次替換所有子字符串?

Strings.Replacer:如何一次替換所有子字符串?

Go
慕哥6287543 2021-11-29 15:48:22
我正在嘗試從一個(gè)字符串中替換多個(gè)不同的字符,Replacer但在替換一個(gè)字符串時(shí)遇到了問題。輸出有兩個(gè)下劃線而不是一個(gè),如果我嘗試使用 otherReplacer替換它,那么它不能完全替換它。試試Go Playground上的代碼:package mainimport (    "fmt"    "strings"    )//Expecting output to be emp_my_statsfunc main() {    var input string = "/v1.0/emp/emp_1/my_stats"    replacer := strings.NewReplacer("/v1.0/", "", "/", "_", "emp_1", "")//  replacer := strings.NewReplacer("/v1.0/", "", "/", "_", "/emp_1", "")    output := replacer.Replace(input)    fmt.Printf("output %v", output) }我可以使用多個(gè)Replacer等,但真的很想在一次通過/或一次聲明中完成。任何建議如何干凈地做到這一點(diǎn)?我的目標(biāo)是高效(這將經(jīng)常進(jìn)行,盡管這些字符串很短,但非常重要)并且不使用多個(gè)Replacers。
查看完整描述

2 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

您還沒有指定任何其他可能的輸入,但它看起來是這樣的:


input := "/v1.0/emp/emp_1/my_stats"

您需要用下劃線連接"emp"和"my_stats"部分'_'。而你嘗試的替代品來看,"/v1.0/"和"/emp_1/"部分是靜態(tài)的,所以你可以簡(jiǎn)單地做這一個(gè)替代品:


replacer := strings.NewReplacer("/v1.0/", "", "/emp_1/", "_")

完整示例:


input := "/v1.0/emp/emp_1/my_stats"


replacer := strings.NewReplacer("/v1.0/", "", "/emp_1/", "_")


output := replacer.Replace(input)

fmt.Println("Output:", output)

輸出(在Go Playground上試試):


Output: emp_my_stats

筆記:


您提到您必須經(jīng)常執(zhí)行此操作,并且您希望此操作有效。因此,請(qǐng)確保您只創(chuàng)建一個(gè)Replacer,并在需要進(jìn)行替換時(shí)重用它(例如,您可以將其存儲(chǔ)在初始化一次的全局變量中)。從您的輸入來看,它看起來像是某個(gè) URL 的路徑,而您最有可能想要這樣做的是 HTTP 處理程序,它可能在多個(gè) goroutine 上同時(shí)運(yùn)行。使用Replacer來自多個(gè) goroutine 的a 是安全的,引用自以下文檔Replacer:


多個(gè) goroutine 并發(fā)使用是安全的。


注釋#2:


如果輸入中的"/v1.0/"和"/emp_1/"部分不是靜態(tài)的,那么您無法真正用Replacer. 在這種情況下,您可以使用 regexp 或作為更有效的解決方案,將字符串拆分為'/'并將相關(guān)部分與'_'.


查看完整回答
反對(duì) 回復(fù) 2021-11-29
?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊

strings.Split 可能會(huì)完成你想要的:


package main


import (

    "fmt"

    "strings"

)


//Expecting output to be emp_my_stats


func main() {


    input := "/v1.0/emp/emp_1/my_stats"

    xs := strings.Split(input, "/")

    fmt.Println(xs)

    fmt.Println(xs[4])

    fmt.Println(xs[3] + xs[4])

    fmt.Println(xs[3][:4] + xs[4])

    fmt.Println(xs[3][:len(xs[3])-1] + xs[4])

}

以上產(chǎn)生了這個(gè)輸出:


[ v1.0 emp emp_1 my_stats]

my_stats

emp_1my_stats

emp_my_stats

emp_my_stats

您可以在此處在go Playground上看到它的運(yùn)行情況。


查看完整回答
反對(duì) 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 184 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)