gpt4 book ai didi

regex - 是否可以在 Golang 中提取字符串的一部分并在一次操作中替换这些部分?

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:40 26 4
gpt4 key购买 nike

假设我想从一个字符串中提取所有数字(很可能使用正则表达式匹配)并且我还想用通用占位符(如“#”)替换这些数字匹配。

这很容易分两部分完成,先使用 FindAll,然后使用 ReplaceAll。但是,我对执行此类操作的性能成本深表怀疑。

所以取一个字符串

"sdasd 3.2% sadas 6 ... +8.9"

替换为

"sdasd #% sadas # ... +#"

得到一片

[3.2,6.0,8.9]

以尽可能高效的方式。

编辑:我实现了 regexp.FindAllString + regexp.ReplaceAllString 并且对我的应用程序的性能影响非常小。我希望有空时尝试 Elliot Chance 的方法并比较两者。

最佳答案

如果你需要原始性能而不是正则表达式,即使它很方便,也很少是实现它的方法。逐个 token 迭代 token 应该非常快。一些代码:

input := "sdasd 3.2 sadas 6"
output := []string{}
numbers := []float64{}

for _, tok := range strings.Split(input, " ") {
if f, err := strconv.ParseFloat(tok, 64); err == nil {
numbers = append(numbers, f)
tok = "#"
}
output = append(output, tok)
}
finalString := strings.Join(output, " ")
fmt.Println(finalString, numbers)

playground link

我敢肯定还有一些可以进行的优化,但这是我会采用的一般方法。

关于regex - 是否可以在 Golang 中提取字符串的一部分并在一次操作中替换这些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43810523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com