Astring
不是单一的rune
,它可能包含多个runes
。您可以使用简单的类型转换将 a转换string
为[]runes
包含其所有符文的 a,例如[]rune(sample)
.
for range
迭代 a 的符文,string
因此在您的示例runeValue
中是 type rune
,您可以在converter
地图中使用它,例如:
var converter = map[rune]rune{}
sample := "⌘こんにちは"
for _, runeValue := range sample {
converter[runeValue] = runeValue
}
fmt.Println(converter)
但由于rune
是 的别名int32
,打印上面的converter
地图将打印整数,输出将是:
map[8984:8984 12371:12371 12385:12385 12395:12395 12399:12399 12435:12435]
如果要打印字符,请使用%c
动词 of fmt.Printf()
:
fmt.Printf("%c\n", converter)
这将输出:
map[⌘:⌘ こ:こ ち:ち に:に は:は ん:ん]
试试Go Playground上的示例。
如果要替换(切换) a 中的某些符文string
,请使用该strings.Map()
函数,例如:
sample := "⌘こんにちは"
result := strings.Map(func(r rune) rune {
if r == '⌘' {
return 'a'
}
if r == 'こ' {
return 'b'
}
return r
}, sample)
fmt.Println(result)
哪些输出(在Go Playground上尝试):
abんにちは
如果您想要由converter
地图定义的替换:
var converter = map[rune]rune{
'⌘': 'a',
'こ': 'b',
}
sample := "⌘こんにちは"
result := strings.Map(func(r rune) rune {
if c, ok := converter[r]; ok {
return c
}
return r
}, sample)
fmt.Println(result)
这输出相同。在Go Playground上试试这个。