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

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

不區分大小寫的字符串和數組(as string)替換為 Go 中使用正則表達式

不區分大小寫的字符串和數組(as string)替換為 Go 中使用正則表達式

Go
米脂 2022-08-24 17:06:24
我有一個案例,我需要對Go(json)字符串中的字符串進行不區分大小寫的替換。替換可以是以下情況搜索字符串: ;替換字符串SOME_SEARCH_STRINGREPLACEMENT_STRING搜索字符串: ;替換字符串"[\"SOME_SEARCH_STRING\"]""[\"INTv2RPACS\"]"我有以下作為我的正則表達式pattern := fmt.Sprintf(`(%s)`, searchString)pat := regexp.MustCompile("(?i)" + pattern)content = pat.ReplaceAllString(content, replacementString)當搜索和替換字符串值是簡單字符串時,上述內容似乎工作正常,但是當搜索是替換值數組時,上述操作似乎可以正常工作(例如上面的 #2)。我需要做什么正則表達式更新才能替換數組?
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

使用正則表達式。QuoteMeta 在搜索字符串中引用元字符。


pattern := fmt.Sprintf(`(%s)`, regexp.QuoteMeta(searchString))

pat := regexp.MustCompile("(?i)" + pattern)

content = pat.ReplaceAllString(content, replacementString)


查看完整回答
反對 回復 2022-08-24
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

package main


import (

    "fmt"

    "regexp"

)


type rep struct {

    from string

    to   string

}


func replace(str string, reps []rep) (result string) {

    result = str


    for i := range reps {

        rx := regexp.MustCompile(fmt.Sprintf("(?i)(%s)", regexp.QuoteMeta(reps[i].from)))

        result = rx.ReplaceAllString(result, reps[i].to)

    }

    return

}


func main() {

    content := `

{

    "key_1": "SoME_SEArCH_STRING",

    "key_2": "some_some_SEARCH_STRING_string",

    "key_3": ["SOME_SEARCH_STRING"],

    "key_4": "aBc"

}`


    var replaces = []rep{

        {`["SOME_SEARCH_STRING"]`, `["INTv2RPACS"]`},// important: array replacements before strings

        {`SOME_SEARCH_STRING`, `REPLACEMENT_STRING`},

    }


    fmt.Println(content)

    fmt.Println(replace(content, replaces))

}

output:


{

    "key_1": "SoME_SEArCH_STRING",

    "key_2": "some_some_SEARCH_STRING_string",

    "key_3": ["SOME_SEARCH_STRING"],

    "key_4": "aBc"

}


{

    "key_1": "REPLACEMENT_STRING",

    "key_2": "some_REPLACEMENT_STRING_string",

    "key_3": ["INTv2RPACS"],

    "key_4": "aBc"

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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