gpt4 book ai didi

string - 如何将字符串转换为 rune ?

转载 作者:行者123 更新时间:2023-12-03 10:10:10 29 4
gpt4 key购买 nike

这是我的代码段:

var converter = map[rune]rune {//some data}

sample := "⌘こんにちは"

var tmp string

for _, runeValue := range sample {
fmt.Printf("%+q", runeValue)
tmp = fmt.Sprintf("%+q", runeValue)
}
fmt.Printf("%+q", runeValue)的输出为:
'\u2318'
'\u3053'
'\u3093'
'\u306b'
'\u3061'
'\u306f'
这些值实际上是 rune ,但是由于 Sprintf的返回类型是string,因此我无法在我的映射表 [rune]rune中使用它。
我想知道如何将字符串转换为 rune ,换句话说,如何处理此问题?

最佳答案

string不是单个rune,它可能包含多个runes。您可以使用简单的conversion类型将string转换为包含[]runes之类所有 rune 的[]rune(sample)for range遍历string的 rune ,因此在您的示例中runeValue的类型为rune,您可以在converter映射中使用它,例如:

var converter = map[rune]rune{}
sample := "⌘こんにちは"
for _, runeValue := range sample {
converter[runeValue] = runeValue
}
fmt.Println(converter)
但是由于 runeint32的别名,因此打印上面的 converter映射将打印整数,输出将是:
map[8984:8984 12371:12371 12385:12385 12395:12395 12399:12399 12435:12435]
如果要打印字符,请使用 %c fmt.Printf()动词:
fmt.Printf("%c\n", converter)
将输出:
map[⌘:⌘ こ:こ ち:ち に:に は:は ん:ん]
尝试在 Go Playground上的示例。
如果要替换(切换) string中的某些 rune ,请使用 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上尝试这个。

关于string - 如何将字符串转换为 rune ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65195938/

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