自定义字符串排序方法

IT技术2年前 (2022)发布 投稿用户
0

publicclassCustomStringComparer:System.Collections.Generic.IComparer

{
#region
/*privateListConvert(Listlists){
for(inti=0;i<lists.Count-1;i++)
{
for(intj=i+1;j<lists.Count;j++)
{
stringh1=lists;
stringh2=lists[j];
if(Compare1(h1,h2))//调用比较算法

C#


{
stringtemp=lists[j];
[i]lists[j]=lists;
lists=temp;
}
}
}
returnlists;
}
privateboolCompare1(stringfileA,stringfileB)
{
if(string.IsNullOrEmpty(fileA)||string.IsNullOrEmpty(fileB))
thrownewArgumentException(“Parameterscan’tbenull”);
//stringfileA=xasstring;
//stringfileB=yasstring;
intresulta=0;
intresultb=0;
boolresult1=int.TryParse(fileA,outresulta);
boolresult2=int.TryParse(fileB,outresultb);
if(result1||result2)
{
if(result1&&result2)
{
returnresulta>resultb;
}
elseif(!result1)
{
returntrue;
}
elseif(!result2)
{
returnfalse;
}
returnfalse;
}
else
{
char[]arr1=fileA.ToCharArray();
char[]arr2=fileB.ToCharArray();
inti=0,j=0;
while(i<arr1.Length&&j<arr2.Length)
{
if(char.IsDigit(arr1)&&char.IsDigit(arr2[j]))
{
strings1=””,s2=””;
while(i<arr1.Length&&char.IsDigit(arr1))
{
s1+=arr1;
i++;
}
while(j<arr2.Length&&char.IsDigit(arr2[j]))
{
s2+=arr2[j];
j++;
}
if(int.Parse(s1)>int.Parse(s2))
{
returntrue;
}
elseif(int.Parse(s1)<int.Parse(s2))
{
returnfalse;
}
}
else
{
if(!char.IsDigit(arr1)&&!char.IsDigit(arr2[j]))
{
if(arr1>arr2[j])
{
returntrue;
}
elseif(arr1<arr2[j])
{
returnfalse;
}
}
elseif(char.IsDigit(arr1))
{
returnfalse;
}
elseif(char.IsDigit(arr2[j]))
{
returntrue;
}
i++;
j++;
}
}
if(arr1.Length>arr2.Length)
{
returntrue;
}
else
{
returnfalse;
}
}
}*/
#endregion
publicintCompare(stringfileA,stringfileB)
{
if(string.IsNullOrEmpty(fileA)||string.IsNullOrEmpty(fileB))
thrownewArgumentException(“Parameterscan’tbenull”);
intresulta=0;
intresultb=0;
boolresult1=int.TryParse(fileA,outresulta);
boolresult2=int.TryParse(fileB,outresultb);
if(result1||result2)//任意一个字符串为数值
{
//判别是否有为非数值
if(!result2)
{
return-1;
}
elseif(!result1)
{
return1;
}
else//都是数值
{
returnresulta>resultb?1:resulta<resultb?-1:0;
}
}
else//都包括非数值类型字符
{
char[]arr1=fileA.ToCharArray();
char[]arr2=fileB.ToCharArray();
inti=0,j=0;
while(i<arr1.Length&&j<arr2.Length)
{
if(char.IsDigit(arr1)&&char.IsDigit(arr2[j]))
{
strings1=””,s2=””;
while(i<arr1.Length&&char.IsDigit(arr1))
{
s1+=arr1;
i++;
}
while(j<arr2.Length&&char.IsDigit(arr2[j]))
{
s2+=arr2[j];
j++;
}
if(int.Parse(s1)>int.Parse(s2))
{
return1;
}
elseif(int.Parse(s1)
{
return-1;
}
}
else
{
if(!char.IsDigit(arr1)&&!char.IsDigit(arr2[j]))
{
if(arr1>arr2[j])
{
return1;
}
elseif(arr1<arr2[j])
{
return-1;
}
}
elseif(char.IsDigit(arr1))
{
return-1;
}
elseif(char.IsDigit(arr2[j]))
{
return1;
}
i++;
j++;
}
}
returnarr1.Length>arr2.Length?1:arr1.Length<arr2.Length?-1:0;
}
}
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章