C# List<string>用Sort排序书序乱的

比如我要的结果是:支架1、支架2、支架3、....、支架10、支架11、支架12、..但是出现的结果是:支架1、支架11、支架12、...、支架19、支架2、支架21.。... 比如我要的结果是:支架1、支架2、支架3、....、支架10、支架11、支架12、..
但是出现的结果是:支架1、支架11、支架12、...、支架19、支架2、支架21.。。。。。
class Comp : Comparer<string>
{
public override int Compare(string x, string y)
{
return int.Parse(x) - int.Parse(y); //异常,输入格式不正确,换成Convert.ToInt32也错误
}
}
展开
 我来答
toshiojkx
2013-11-14 · TA获得超过492个赞
知道小有建树答主
回答量:260
采纳率:100%
帮助的人:104万
展开全部
class Comp : Comparer<string>
    {
        public override int Compare(string x, string y)
        {
            return int.Parse(x.Substring(2)) - int.Parse(x.Substring(2));
        }
    }
追问
我的意思是要用一个通用的函数,如果我命名的是“安装支架XX”呢,您那个截取字符就不对了
追答
class Comp : Comparer<string>
{
    public override int Compare(string x, string y)
    {
        while (true)
        {
            try
            {
                int.Parse(x);
                break;
            }
            catch
            {
                x = x.Substring(1);
                y = y.Substring(1);
            }
        }
        return int.Parse(x) - int.Parse(x);
    }
}

要是连x和y前面的非数字数量都不一定一样的话用同样的方法把x和y分开处理就好了

lffdoudou
2013-11-14 · TA获得超过711个赞
知道小有建树答主
回答量:548
采纳率:0%
帮助的人:117万
展开全部
你需要取出结果中的数字,然后再进行比较
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zwjfriend
2013-11-16 · 超过14用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:38.9万
展开全部
Regex rg = new Regex(@"[1-9]\d*");
Match mc = rg.Match(str);
Response.Write(mc.value);
这样可以把数字提出来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Milo_WuW
2013-11-14 · 超过30用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:66.9万
展开全部
你可以支架后面的数字做排序,用数字排序,这样就OK了

对的话,请采纳
更多追问追答
追问
我不一定都是“支架XX”这样命名,也可能是“安装过程XX”
追答
是不是数字前的中文字都一样?
一样的话,就直接比较数字就OK,如果不是就有些麻烦了

你这样的排序,必须要拆分字符串比较的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式