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也错误
}
} 展开
但是出现的结果是:支架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也错误
}
} 展开
4个回答
展开全部
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分开处理就好了
展开全部
你需要取出结果中的数字,然后再进行比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Regex rg = new Regex(@"[1-9]\d*");
Match mc = rg.Match(str);
Response.Write(mc.value);
这样可以把数字提出来
Match mc = rg.Match(str);
Response.Write(mc.value);
这样可以把数字提出来
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以支架后面的数字做排序,用数字排序,这样就OK了
对的话,请采纳
对的话,请采纳
更多追问追答
追问
我不一定都是“支架XX”这样命名,也可能是“安装过程XX”
追答
是不是数字前的中文字都一样?
一样的话,就直接比较数字就OK,如果不是就有些麻烦了
你这样的排序,必须要拆分字符串比较的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询