3 回答
TA贡献1799条经验 获得超9个赞
您可以使用正则表达式:
package main
import (
"fmt"
"regexp"
)
func main() {
regexForA := regexp.MustCompile(`\ba\b`)
test := "a abcd a"
output := regexForA.ReplaceAllLiteralString(test,`hello`)
fmt.Println(output)
}
输出:
hello abcd hello
用于运行此示例的 Playground 链接:https://play.golang.org/p/Cs99TrQDUtK
TA贡献1833条经验 获得超4个赞
您可以将问题一分为二:首先从一开始就获取字符串,然后执行限制为 1 的普通替换。这将为您提供:
你好 abcd a
然后,反转字符串并执行相同的操作。您肯定可以对其进行更优化,但这将完成工作,并且仍然具有很强的可读性:
func Reverse(s string) (result string) {
for _,v := range s {
result = string(v) + result
}
return
}
func main() {
item := "hello"
test := "a abcd a"
s := "a"
result := strings.Replace(test, s, item, 1)
result = Reverse(strings.Replace(Reverse(result), s, Reverse(item), 1))
fmt.Println(result)
}
指纹
你好 abcd 你好
请注意,您需要反转第一个输入字符串,替换,然后反转结果以使其恢复正确的顺序。
操场链接: https://play.golang.org/p/tuzxehhnEDu
TA贡献1891条经验 获得超3个赞
如果我这样做,我只会拆分字符串(字符串。字段),然后基于字符串比较替换伪代码:
for i, field := range fields {
if field == "a" {
fields[i] = "hello"
}
}
我在手机上写了它,从来没有测试过,但你应该理解一个概念:)
- 3 回答
- 0 关注
- 109 浏览
添加回答
举报
