在Python中,.format()
是一个强大的字符串格式化方法,它允许我们将变量插入到字符串中,并按照指定的格式进行格式化。虽然在Golang中,没有Python中的.format()
的功能,但是通过string.Replace()
函数和自定义函数,可以实现类似的字符串格式化功能。
Golang中的string.Replace()
函数可将字符串中前n个旧字符串替换为新字符串。
语法:
func Replace(s, old str, new str, n int) string
其中:s
是原始或给定的字符串,old
是旧字符串,new
是新字符串,n
是替换旧字符串的次数(当n为-1时替换所有匹配项)。
示例代码:
package main
import (
"fmt"
"strings"
)
func formatInGo(text string, values map[string]string) string {
for key, value := range values {
text = strings.Replace(text, "{"+key+"}", value, -1)
}
return text
}
func main() {
var (
name = "John"
id = "01"
class = "Class 1"
)
var text string
fmt.Scanln(&text)
result := formatInGo(text, map[string]string{
"{name}": name,
"{id}": id,
"{class}": class,
})
fmt.Println(result)
}
输入
姓名{name}、学号{id}、班级{class}
输出
姓名John、学号01、班级Class 1
输入
{class} {name} {id}
输出
Class1 John 01
在map中,key “{name}” 也可以替换为 “name”,但是要注意:假设你要替换的文本中包含一个名为 “name” 的变量,那么它将会替换所有出现的 “name”,这会导致意外的替换。为了解决这个问题,可以使用一些特殊的标记来表示变量名,比如大括号"{ }"。