gpt4 book ai didi

string - 为什么 string.Replace 在 golang 中不起作用

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

我正在编写一个程序,如果字符串中存在字母,则将其删除。但预期的结果不会到来。我试过的程序如下:-

package main

import (
"fmt"
"strings"
)

func main() {
strValue := "This is a string"
stringRemove := []string{"a", "an"}
var removalString string
for _, wordToRemove := range stringRemove {
removalString = strings.Replace(strValue, wordToRemove, "", -1)
}
fmt.Println(removalString)
result := strings.Replace(strValue, " ", "", -1)
result1 := strings.ToLower(result)
fmt.Println(result1)
}

输出:-

This is a string
thisisastring

如果我在 for 循环中使用行 fmt.Println(removalString) 那么它将打印结果:-

输出:-

This is  string
This is a string
This is a string
thisisastring

预期输出:-

thisisstring

kheedn li link

最佳答案

您始终对原始字符串 strValue 应用替换操作,因此在循环之后只会删除最后一个可移动的单词(您的示例中甚至不包含该单词)。您应该存储 strings.Replace() 的结果(您这样做),并在下一次迭代中使用它:

removalString := strValue
for _, wordToRemove := range stringRemove {
removalString = strings.Replace(removalString, wordToRemove, "", -1)
}

并在您的最后一次替换中使用它:

result := strings.Replace(removalString, " ", "", -1)
result1 := strings.ToLower(result)

然后输出将是(在 Go Playground 上尝试):

This is  string
thisisstring

另请注意,要删除空格,您可以将其添加到可删除单词列表中,并且您不需要总是创建新变量,您可以重用现有变量。

这也将执行相同的转换:

s := "This is a string"
words := []string{"a", "an", " "}

for _, word := range words {
s = strings.Replace(s, word, "", -1)
}

s = strings.ToLower(s)
fmt.Println(s)

Go Playground 上试试.

关于string - 为什么 string.Replace 在 golang 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53478413/

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