您可以使用strconv.Unquote() https://golang.org/pkg/strconv/#Unquote and strconv.UnquoteChar() https://golang.org/pkg/strconv/#UnquoteChar函数来进行转换。
你应该知道的一件事是strconv.Unquote()
只能取消引号中的字符串(例如以引号字符开头和结尾"
或反引号字符`
),所以我们必须手动附加它。
看这个例子:
lines := []string{
`\u0053`,
`\u0075`,
`\u006E`,
}
fmt.Println(lines)
for i, v := range lines {
var err error
lines[i], err = strconv.Unquote(`"` + v + `"`)
if err != nil {
fmt.Println(err)
}
}
fmt.Println(lines)
fmt.Println(strconv.Unquote(`"Go\u0070\x68\x65\x72"`))
输出(尝试一下去游乐场 http://play.golang.org/p/BZO5J0233H):
[\u0053 \u0075 \u006E]
[S u n]
Gopher <nil>
如果要取消引用的字符串包含单个字符的转义序列rune
(或者你只是想取消引用第一个rune
),您可以使用strconv.UnquoteChar()
。这就是它的样子(注意:在这种情况下不需要引用输入,就像需要的那样strconv.Unquote()
):
runes := []string{
`\u0053`,
`\u0075`,
`\u006E`,
}
fmt.Println(runes)
for _, v := range runes {
var err error
value, _, _, err := strconv.UnquoteChar(v, 0)
if err != nil {
fmt.Println(err)
}
fmt.Printf("%c\n", value)
}
这将输出(尝试在去游乐场 https://play.golang.org/p/aFv7BPnVphU):
[\u0053 \u0075 \u006E]
S
u
n