我花了几个小时寻找lib或执行此操作的方法:
我有一个数组[] string {“ ex10”,“ ex2”,“ ex1”},在调用sort.Strings或使用sort.Slice与字节数组进行比较之后,我得到了结果[] string { “ ex1”,“ ex10”,“ ex2”}
有人知道如何实现吗?
如果有人知道我迅速找到了解决方法here
答案 0 :(得分:2)
如果您不想按字典顺序对数字进行排序,则需要将其与字符串分开,并将其解析为整数。
此示例假定始终有一个带有有效数字的2个字母前缀,并相应地对该字符串进行切片:https://play.golang.org/p/LaX-pTr6etc
s := []string{"ex10", "ex2", "ex1"}
sort.Slice(s, func(i, j int) bool {
if s[i][:2] != s[j][:2] {
return s[i] < s[j]
}
ii, _ := strconv.Atoi(s[i][2:])
jj, _ := strconv.Atoi(s[j][2:])
return ii < jj
})