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 關注
- 85 瀏覽
添加回答
舉報