如果您运行fmt.Println("\u554a")
,则会显示“啊”。
但如何从符文“啊”中获取unicode-style-string \u554a
?
答案 0 :(得分:15)
package main
import "fmt"
import "strconv"
func main() {
quoted := strconv.QuoteRuneToASCII('啊') // quoted = "'\u554a'"
unquoted := quoted[1:len(quoted)-1] // unquoted = "\u554a"
fmt.Println(unquoted)
}
输出:
\u554a
答案 1 :(得分:12)
func RuneToAscii(r rune) string {
if r < 128 {
return string(r)
} else {
return "\\u" + strconv.FormatInt(int64(r), 16)
}
}
答案 2 :(得分:4)
您可以使用fmt.Sprintf
和%U
来获取十六进制值:
test = fmt.Sprintf("%U", '啊')
fmt.Println("\\u" + test[2:]) // Print \u554A
答案 3 :(得分:1)
例如,
package main
import "fmt"
func main() {
r := rune('啊')
u := fmt.Sprintf("%U", r)
fmt.Println(string(r), u)
}
输出:
啊 U+554A
答案 4 :(得分:1)
fmt.Printf("\\u%X", '啊')
http://play.golang.org/p/Jh9ns8Qh15
(大写或小写'x'将控制十六进制字符的大小写)
正如包fmt的documentation所暗示的那样:
%U Unicode格式:U + 1234;与“U +%04X”相同
答案 5 :(得分:0)
我想补充一下hardPass的答案。
在Unicode的十六进制表示少于4个字符(例如ü)的情况下,strconv.FormatInt
将导致\ufc
,这将导致Go中的Unicode语法错误。与Go可以理解的完整\u00fc
相对。
使用fmt.Sprintf
以十六进制格式对零填充十六进制将解决此问题:
func RuneToAscii(r rune) string {
if r < 128 {
return string(r)
} else {
return fmt.Sprintf("\\u%04x", r)
}
}
答案 6 :(得分:0)
这可以完成工作。
def plotHighestFive(x1, y1, x2, y2):
groups = 5
z = []
for i in range(len(x1)):
z.append((x1[i], x2[i])) # making a list of the states
# plot settings
fig, ax = plt.subplots()
index = np.arange(groups)
width = 0.35
opacity = 0.9
rects1 = plt.bar(index + width, y1, width, alpha = opacity, color = 'c', label = '1999')
rects2 = plt.bar(index + width, y2, width, alpha = opacity, color = 'r', label = '2017')
# setting up the plot labels
plt.xlabel('State')
plt.ylabel('Number of Deaths per 100,000 Residents')
plt.title('5 States with the Highest Unintended Overdose Death Rate')
plt.xticks(index + width/2, z)
plt.legend()
plt.tight_layout()
plt.show()
答案 7 :(得分:0)
package main
import "fmt"
func main() {
fmt.Printf("%+q", '啊')
}