"W"? 最佳答案 为简单起见,以下解决方案省略了范围检查。 它们都可以在 Go Playground 上试用. 数字-6ren">
gpt4 book ai didi

string - Golang 数字的字母表示

转载 作者:IT王子 更新时间:2023-10-29 01:07:33 26 4
gpt4 key购买 nike

有没有简单的方法可以将数字转换为字母?

例如,
3 => "C"23 => "W"?

最佳答案

为简单起见,以下解决方案省略了范围检查。
它们都可以在 Go Playground 上试用.

数字 -> rune

只需将数字添加到 const 'A' - 1 中,添加 1 即可得到 'A',添加 >2 你得到 'B' 等:

func toChar(i int) rune {
return rune('A' - 1 + i)
}

测试它:

for _, i := range []int{1, 2, 23, 26} {
fmt.Printf("%d %q\n", i, toChar(i))
}

输出:

1 'A'
2 'B'
23 'W'
26 'Z'

数字 -> 字符串

或者,如果您希望将其作为字符串:

func toCharStr(i int) string {
return string('A' - 1 + i)
}

输出:

1 "A"
2 "B"
23 "W"
26 "Z"

最后一个(将数字转换为 string)记录在 Spec: Conversions to and from a string type 中:

Converting a signed or unsigned integer value to a string type yields a string containing the UTF-8 representation of the integer.

数字 -> 字符串(缓存)

如果你需要多次这样做,将 strings 存储在数组中是有利可图的,例如从中返回 string:

var arr = [...]string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}

func toCharStrArr(i int) string {
return arr[i-1]
}

注意: slice (而不是数组)也可以。

注意#2:如果你添加一个虚拟的第一个字符,你可以改进这个,这样你就不必从 i 中减去 1:

var arr = [...]string{".", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}

func toCharStrArr(i int) string { return arr[i] }

Number -> string( slice 一个string常量)

还有一个有趣的解决方案:

const abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

func toCharStrConst(i int) string {
return abc[i-1 : i]
}

slice string 是高效的:新的 string 将共享后备数组(这是可以做到的,因为 string 是不可变的)。

关于string - Golang 数字的字母表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803999/

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