当前位置: 移动技术网 > IT编程>开发语言>.net > C#类似版本号有多个分割符可以产生的排列组合,类似版本号比较

C#类似版本号有多个分割符可以产生的排列组合,类似版本号比较

2018年04月21日  | 移动技术网IT编程  | 我要评论

坚果包扎术,含羞草,aisiren

 

 

我采用asp.net进行演示

送给有缘人吧,可以获得类似版本号的功能,也可以对比两个版本号,我这里是其他需要用逗号分割的

using System;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var b = Request.QueryString["b"];
if (string.IsNullOrEmpty(b))
{
b = "0,3,5";
}

var a = b;//GetNewBb("2,3,5", b);//没有解决低位重新计算
while (a != "2,3,5")
{
b = a;
a = GetNewVersion("2,3,5", b);
Response.Write(a + "<br />");
}
}
private string GetNewVersion(string max, string current,char separator=',')
{
var a = max.Split(separator);//分割字符
var b = current.Split(separator);//分割字符2
var flag = true;//设第一个大
for (int i = a.Length - 1; i > 0; i--)
{
if (int.Parse(b[i]) < int.Parse(a[i]))
{
b[i] = (int.Parse(b[i]) + 1).ToString();
break;
}
if (i - 1 >= 0&& int.Parse(b[i-1]) < int.Parse(a[i-1]))
{
for (var j = i; j < a.Length; j++)
{
b[j] = "0";
}
b[i-1] = (int.Parse(b[i-1]) + 1).ToString();
break;
}
}

for (int k = 0; k < a.Length-1; k++)
{
if (int.Parse(a[k]) < int.Parse(b[k]))
{
flag = false;//说明current是大的如果比较大小,改返回为bool,最后return flag即可
break;
}
}
return string.Join(",", b);
}
}

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网