我采用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);
- }
- }
复制代码
|