Pet*_*ete 8 string character type-conversion go
有一种简单的方法可以将数字转换为字母吗?
例如,
3=> "C"和23=> "W"?
icz*_*cza 15
为简单起见,以下解决方案省略了范围检查.
他们都可以在Go Playground尝试.
rune只需将号码添加到常量'A' - 1所以加入1这个你'A',增加2你'B'等:
func toChar(i int) rune {
return rune('A' - 1 + i)
}
Run Code Online (Sandbox Code Playgroud)
测试它:
for _, i := range []int{1, 2, 23, 26} {
fmt.Printf("%d %q\n", i, toChar(i))
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 'A'
2 'B'
23 'W'
26 'Z'
Run Code Online (Sandbox Code Playgroud)
string或者如果你想要它string:
func toCharStr(i int) string {
return string('A' - 1 + i)
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 "A"
2 "B"
23 "W"
26 "Z"
Run Code Online (Sandbox Code Playgroud)
最后一个(将数字转换为string)记录在Spec:转换为字符串类型的转换中:
将有符号或无符号整数值转换为字符串类型会生成包含整数的UTF-8表示形式的字符串.
string(缓存)如果您需要多次执行此操作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]
}
Run Code Online (Sandbox Code Playgroud)
注意:切片(而不是数组)也可以.
注2:您可以改善这一点,如果你添加一个虚拟的第一个字符,所以你不必减去1来自i:
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] }
Run Code Online (Sandbox Code Playgroud)
string(切片string常数)另一个有趣的解决方案
const abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
func toCharStrConst(i int) string {
return abc[i-1 : i]
}
Run Code Online (Sandbox Code Playgroud)
切片a string是有效的:新的string将共享支持数组(可以完成,因为strings是不可变的).
如果您不需要一个符文,而是一个字符串,并且还需要多个字符(例如 excel 列)
package main
import (
"fmt"
)
func IntToLetters(number int32) (letters string){
number--
if firstLetter := number/26; firstLetter >0{
letters += IntToLetters(firstLetter)
letters += string('A' + number%26)
} else {
letters += string('A' + number)
}
return
}
func main() {
fmt.Println(IntToLetters(1))// print A
fmt.Println(IntToLetters(26))// print Z
fmt.Println(IntToLetters(27))// print AA
fmt.Println(IntToLetters(1999))// print BXW
}
Run Code Online (Sandbox Code Playgroud)
此处预览: https: //play.golang.org/p/GAWebM_QCKi
我还用这个打包了: https: //github.com/arturwwl/gointtoletters
| 归档时间: |
|
| 查看次数: |
7099 次 |
| 最近记录: |