这样就可以了: public class CustomComparer:System.Collections.IComparer { public int Compare(object x, object y){ string s1 = (string)x; string s2 = (string)y; if (s1.Length > s2.Length) return 1; if (s1.Length < s2.Length) return -1; for (int i = 0; i < s1.Length; i++) { if (s1[i] > s2[i]) return 1; if (s1[i] < s2[i]) return -1; } return 0; } }应用: string[] str = new string[]{"A1","A2","A10"}; Array.Sort(str, new CustomComparer()); for (int i = 0; i < str.Length; i++) Console.WriteLine(str[i]);
這位已幫你回答了
Array.Sort(aa);
MessageBox.Show(aa[0]);
MessageBox.Show(aa[1]);
MessageBox.Show(aa[2]);结果是:a,b,c
不对!!!!!!!!!!
比如: A1,A2,A10
用Array.Sort(arr);排出来就是
A1,A10,A2
而我要的是
A1,A2,A10
这就是我为什么要自然排序法
大家不要为了分而乱回答,拜托请自己先试过了再回答,因为我提的问题一般都是大家在工作中会遇到的.这个问题在PHP中很好解决,有专门的类,但PHP不能编译成DLL给C#调用,
public class CustomComparer:System.Collections.IComparer
{
public int Compare(object x, object y){
string s1 = (string)x;
string s2 = (string)y;
if (s1.Length > s2.Length) return 1;
if (s1.Length < s2.Length) return -1;
for (int i = 0; i < s1.Length; i++) {
if (s1[i] > s2[i]) return 1;
if (s1[i] < s2[i]) return -1;
}
return 0;
}
}应用:
string[] str = new string[]{"A1","A2","A10"};
Array.Sort(str, new CustomComparer());
for (int i = 0; i < str.Length; i++)
Console.WriteLine(str[i]);
夕夕宝贝是原来的夕夕公主吗?呵呵
我这里还有2个贴子,问是也是差不多的问题,谢谢你帮我解答了,你随便回2个字吧,我一起把分给了你,再次感谢夕夕宝贝
http://community.csdn.net/Expert/TopicView.asp?id=3703215
http://community.csdn.net/Expert/TopicView.asp?id=3398492
对,就是原来的夕夕公主