亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅替換開頭和結尾處的字符串

僅替換開頭和結尾處的字符串

Go
開心每一天1111 2022-08-24 10:21:14
我想替換第一個和最后一個,但不是.aaaabcd目前,它返回,但我希望有hello hellobcd hellohello abcd hello我使用的原因是我不一定知道出現的位置和數量。但是,如果在組合字符串中,我不想替換它,而只是保持原樣。Go中有什么解決方案可以解決這個問題?ReplaceAllaapackage mainimport (    "fmt"    "strings")func main() {    item := "hello"    test := "a abcd a"    s := "a"    item = strings.ReplaceAll(test, s, item)    fmt.Println(item)}輸出:hello hellobcd hello游樂場: https://play.golang.org/p/D1VzvipblKu
查看完整描述

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


查看完整回答
反對 回復 2022-08-24
?
瀟瀟雨雨

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


查看完整回答
反對 回復 2022-08-24
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

如果我這樣做,我只會拆分字符串(字符串。字段),然后基于字符串比較替換偽代碼:


for i, field := range fields {

    if field == "a" {

        fields[i] = "hello"

    }

}

我在手機上寫了它,從來沒有測試過,但你應該理解一個概念:)


查看完整回答
反對 回復 2022-08-24
  • 3 回答
  • 0 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號