Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 对字符串片段排序:字母按字母顺序*在*之后*降序数字_String_Sorting_Go_Slice - Fatal编程技术网

String 对字符串片段排序:字母按字母顺序*在*之后*降序数字

String 对字符串片段排序:字母按字母顺序*在*之后*降序数字,string,sorting,go,slice,String,Sorting,Go,Slice,鉴于: 排序后: alphanumeric := ["aaa","bbb","ccc","111","222","333"] 已尝试用于内置排序包: ["333","222","111","aaa","bbb","ccc"] 已关闭,但数字部分将按升序排序

鉴于:

排序后:

alphanumeric := ["aaa","bbb","ccc","111","222","333"]
已尝试用于内置排序包:

["333","222","111","aaa","bbb","ccc"]
已关闭,但数字部分将按升序排序

[“111”、“222”、“333”、“aaa”、“bbb”、“ccc”]

此外:

结果不需要:[“ccc”、“bbb”、“aaa”、“333”、“222”、“111”]

这些东西都很新,谢谢你的提示

sort.Slice(字母数字,func(i,j int)bool{
//检查我们是否有数字,并对它们进行相应的排序
如果z,err:=strconv.Atoi(字母数字[i]);err==nil{
如果y,err:=strconv.Atoi(字母数字[j]);err==nil{
返回y字母数字[i]
})

显示您试图解决的问题。@BurakSerdar抱歉已更新。请勿在问题标题中添加“[已解决]”;所以我们有一个机制,可以接受的答案。如果你自己解决了这个问题,你可以发布自己问题的答案并接受。非常感谢!顺便说一句,我发现如果数字以十进制(1.236/2.0等)表示,或者代表一些版本号(1.0.0.2),则此操作可能失败。更新了一点修改后的帖子。
sort.Strings(alphanumeric)
sort.Slice(alphanumeric, func(i, j int) bool {
    return alphanumeric[i] > alphanumeric[j]
})
sort.Slice(alphanumeric, func(i, j int) bool {
    // check if we have numbers, sort them accordingly 
    if z, err := strconv.Atoi(alphanumeric[i]); err == nil {
        if y, err := strconv.Atoi(alphanumeric[j]); err == nil {
        return y < z
    }
    // if we get only one number, alway say its greater than letter 
    return true
    }
    // compare letters normally 
    return alphanumeric[j] > alphanumeric[i]
})