package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Replace("golang", "g", "1", -1))
}
如何将字符串
"golang"
(上述字符串)中的所有字符替换为*
,使其看起来像"******"
?string
。因此,只需构造一个具有相同字符长度但全部为'*'
的 string
。 strings.Repeat()
可以重复一个 string
(通过连接)。ss := []string{"golang", "pi", "世界"}
for _, s := range ss {
fmt.Println(s, strings.Repeat("*", utf8.RuneCountInString(s)))
}
输出(在Go Playground上试一下):
golang ******
pi **
世界 **
len(s)
会给你字符串UTF-8编码形式的长度,因为这是Go在内存中存储字符串的方式。您可以使用utf8.RuneCountInString()
来获取字符数。fmt.Println(len("世界"), utf8.RuneCountInString("世界")) // Prints 6 2
使用 "世界"
作为字符串会输出 6 2
, 因为这个字符串需要使用6个字节来编码(在UTF-8中),但只包含2个字符。
不使用正则表达式的简单方法:
https://play.golang.org/p/B3c9Ket9fp
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Repeat("*", utf8.RuneCountInString("golang")))
}
更符合您最初想法的内容:
https://play.golang.org/p/nbNNFJApPp
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(".")
fmt.Println(re.ReplaceAllString("golang", "*"))
}
strings.Replace("golang", "golang", "******", -1)
吗? - Nadh