2 回答

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)部分與'_'.

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)行情況。
- 2 回答
- 0 關(guān)注
- 184 瀏覽
添加回答
舉報(bào)