gpt4 book ai didi

字符串.替换器 : how to replace all substrings at once?

转载 作者:IT王子 更新时间:2023-10-29 00:52:24 25 4
gpt4 key购买 nike

我正在尝试使用 Replacer 替换字符串中的多个不同字符,但在替换一个字符串时遇到问题。输出有两个下划线而不是一个,如果我尝试使用其他 Replacer 进行替换,那么它无法完全替换它。

尝试 Go Playground 上的代码:

package main

import (
"fmt"
"strings"
)

//Expecting output to be emp_my_stats

func 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)
}

我可以使用多个 Replacer 等,但我真的很想在一次通过/或一次声明中完成。

有什么建议如何做到干净利落?我的目标是提高效率(这将经常进行,尽管这些字符串很短,但非常重要)并且不使用多个 Replacer

最佳答案

您还没有指定任何其他可能的输入,但从这里看来:

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

您需要用下划线 '_' 连接的 "emp""my_stats" 部分。从您对替换器的尝试来看,"/v1.0/""/emp_1/" 部分是静态的,因此您只需使用一个替换器即可:

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

注意事项:

您提到您必须经常执行此操作并且您希望它高效。所以确保你只创建一个 Replacer ,并在需要进行替换时重用它(例如,您可以将它存储在初始化一次的全局变量中)。从您的输入来看,它看起来像是某个 URL 的路径,您最有可能想要这样做的是 HTTP 处理程序,它可能在多个 goroutine 上同时运行。从多个 goroutines 中使用 Replacer 是安全的,引用自 Replacer 的文档:

It is safe for concurrent use by multiple goroutines.

注释#2:

如果输入中的 "/v1.0/""/emp_1/" 部分不是静态的,你不能真正解决你的问题替换器。在这种情况下,您可以使用 regexp 或作为更有效的解决方案,通过 '/' 拆分字符串并使用 '_' 连接相关部分。

关于字符串.替换器 : how to replace all substrings at once?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34215080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com