【发布时间】:2021-03-19 14:21:32
【问题描述】:
这是我的代码 sn-p:
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'
这些值实际上是符文,但由于Sprintf 的返回类型是字符串,我不能在我的地图[rune]rune 中使用它。
我想知道如何将字符串转换为符文,或者换句话说,我该如何处理这个问题?
【问题讨论】:
-
[]rune(sample)?比如play.golang.org/p/ISPOEvSzFQW -
一个
string不是一个rune,它可能包含多个runes。for range迭代其符文,或者您可以使用类似[]rune(sample)的转换来获取string的所有符文作为切片。你的问题到底是什么? -
感谢@mh-cbon。我不想只在控制台上打印它们,但我想在我的地图中使用这些值。
-
谢谢@icza,你知道我想将一些符文值映射到另一个符文值。因此,通过在字符串上使用
range,我想获取每个rune并在我的地图中使用它来找到相应的rune。顺便说一句,我正在尝试实现字符编码 -
@icze,但我的问题是如何获得那个符文。通过在 here 中使用 Rob pike 的建议,我使用
"%+q"获取每个符文,但Sprintf以字符串形式返回。我想知道是否有另一种方法可以使用"%+q"并作为符文返回
标签: string go character-encoding rune