如何正确地将Golang中的字符串替换为“贪婪原则”?

how to replace string in golang with 'greedy principle' properly ?

提问人:akiraxie 提问时间:10/7/2023 最后编辑:akiraxie 更新时间:10/7/2023 访问量:76

问:

我试图屏蔽字符串,但出了点问题

可重现的代码在下面,所有新旧对都是必需的,如何获取而不是?col1col0b

package main

import (
    "fmt"
    "strings"
)

func main() {
    r := strings.NewReplacer("a", "col0", "ab", "col1")
    s := "ab"
    fmt.Println(r.Replace(s))
}

我希望字符串可以替换为最大长度或贪婪原则

字符串 go 替换

评论


答:

3赞 tax evader 10/7/2023 #1

文档中可以看出,NewReplacer 的替换是按照它们在目标字符串中出现的顺序执行的,没有重叠的匹配项,因此它将始终遵循第一个匹配项的基础。如果允许,我认为您可以通过重新组织替换对来解决这个问题,以便较长的字符串 () 比较短的字符串 ("ab"-"col1""a", "col0")

package main

import (
    "fmt"
    "strings"
)

func main() {
    r := strings.NewReplacer("ab", "col1", "a", "col0")
    s := "ab"
    fmt.Println(r.Replace(s))
}