String 为什么字符串.Replace在golang不起作用
我正在制作一个程序来删除字符串中存在的字母。但预期的结果不会出现。我尝试过的程序如下:-String 为什么字符串.Replace在golang不起作用,string,go,replace,String,Go,Replace,我正在制作一个程序来删除字符串中存在的字母。但预期的结果不会出现。我尝试过的程序如下:- package main import ( "fmt" "strings" ) func main() { strValue := "This is a string" stringRemove := []string{"a", "an"} var removalString string for _, wordToRemove := range stringRemove {
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
这就是你要找的:
package main
import (
"fmt"
"strings"
)
func main() {
strValue := "This is a string"
stringRemove := []string{"a", "an"}
removalString := strValue
for _, wordToRemove := range stringRemove {
removalString = strings.Replace(removalString, wordToRemove, "", -1)
}
fmt.Println(removalString)
result := strings.Replace(strValue, " ", "", -1)
result1 := strings.ToLower(result)
fmt.Println(result1)
}
您总是对原始字符串
strValue
应用replace操作,因此在循环之后,只会删除最后一个可移动单词(您的示例中甚至没有包含)。您应该存储字符串的结果。Replace()
(您可以这样做),并在下一次迭代中使用它:
removalString := strValue
for _, wordToRemove := range stringRemove {
removalString = strings.Replace(removalString, wordToRemove, "", -1)
}
并在最后一次更换时使用:
result := strings.Replace(removalString, " ", "", -1)
result1 := strings.ToLower(result)
然后输出将是(在上尝试):
还请注意,要删除空格,可以将其添加到可删除单词列表中,并且不需要总是创建新变量,可以重用现有变量
这也将执行相同的转换:
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)
在上尝试。
removalString
将在每个循环中设置新值。因此fmt.Println(removalString)
将显示最后一个循环的结果
var removalString string
for _, wordToRemove := range stringRemove {
removalString = strings.Replace(strValue, wordToRemove, "", -1)
}
fmt.Println(removalString)
你可以这样做
strValue := "This is a string"
stringRemove := []string{"a", "an"}
for _, wordToRemove := range stringRemove {
strValue = strings.Replace(strValue, wordToRemove, "", -1)
}
fmt.Println(strValue)
如果我要更改行this
result:=strings.Replace(removalString,“”,“-”,-1)
那么我将包括三个破折号,但如果空间很大,我需要一个破折号。我怎样才能得到它。请参阅:-@user10665991您可以将“-”
替换为“-”
,重复替换,直到没有更改(替换)。或者你可以使用regexp。你能告诉我正则表达式吗?我花了很多时间来解决这个问题:(
strValue := "This is a string"
stringRemove := []string{"a", "an"}
for _, wordToRemove := range stringRemove {
strValue = strings.Replace(strValue, wordToRemove, "", -1)
}
fmt.Println(strValue)