在Golang中用Replacer进行多字符串替换

Golang中的字符串替换非常简单,使用 [strings](https://pkg.go.dev/strings)包,Golang中的字符串替换非常容易。从他们的文档中可以看出。"软件包strings实现了简单的函数来处理UTF-8编码的字符串"。就拿下面这句话来说吧。
"Hello World!"
! 现在我们假设我的产品负责人认为用感叹号说 "Hello World "实在是太过分了,如果我发现我需要用. ,这在Golang中非常容易做到。
myString := "Hello World!"
这将导致Hello World. 被打印出来,你可以在这里测试一下。正如你所看到的,使用strings.ReplaceAll 是非常简单的。
- 提供你想操作的字符串
- 提供要替换的字符
- 提供替换值
现在你知道如何在Golang中进行字符串替换了吧,恭喜你题外话,还有一个 [strings.Replace](https://pkg.go.dev/strings#Replace)在这里你可以控制在你的字符串中进行多少次替换。
当它不那么简单时
替换是很好的,但如果你的字符串看起来像这样,怎么办?
"Hello_World!_This.sentence.has_chars_I.want_to.remove!"
我们的产品负责人说这个句子不会飞,我们需要用空格来替换和_ 和任何. 。现在我们知道如何使用strings.ReplaceAll ,我们可以轻松地做这样的事情。
myString := "Hello_World!_This.sentence.has_chars_I.want_to.remove!"
这将导致Hello World! This sentence has chars I want to remove! 被打印出来,你可以在这里测试。在这个例子中,我们仍然有一个相当简单的句子,有两个不同的字符需要替换。这并不坏,我们可以使用两个strings.ReplaceAll 语句相当容易地实现我们的目标。
但是,如果我们需要替换5个字符,或10个,或20个呢?我们可以有20个strings.ReplaceAll 语句,它可以正常工作,但它很麻烦。或者如果我需要在多个函数中进行这种替换呢?这可能很快就会变成一个混乱的局面。让我们来看看一个更好的方法。
使用替换器
strings 包里有一个 [strings.Replacer](https://pkg.go.dev/strings#Replacer)选项。从他们的文档中可以看出。"Replacer用替换的字符串列表进行替换。它对多个goroutine的并发使用是安全的"。基本上,你可以指定一个要执行的替换列表,然后对你的目标字符串一次性进行替换。
myString := "Hello_World!_This.sentence.has_chars_I.want_to.remove!"
这将导致Hello World! This sentence has chars I want to remove! 被打印出来,你可以在这里测试。使用Replacer函数也是非常直接的。
- 创建一个新的Replacer,包含所有你想替换的字符
- 将其应用于你的字符串
在这个例子中,它没有为我们节省任何一行代码,但这没关系,这只是一个简单的例子。但这为我们准备了更复杂的场景,例如。
- 需要替换5、10、20个不同的字符
- 需要将替换器传递给任何需要执行完全相同的替换的函数
总结
这篇文章展示了在strings 包中发现的Replacer功能的非常简单的用法。使用这个功能,你可以非常快速地替换一个字符串中的多个字符。希望对你有所帮助。