3 回答
TA贡献1797条经验 获得超4个赞
尝试这样的事情:
public static string next_Version(string user_input)
{
try
{
int[] values = user_input.Split(".".ToCharArray()).Select(s => Convert.ToInt32(s)).ToArray();
bool carryover;
int index = values.Length - 1;
do
{
carryover = false;
values[index]++;
if ((index > 0) && (values[index] == 10))
{
values[index] = 0;
carryover = true;
index--;
}
} while (carryover && (index >= 0));
return String.Join(".", values);
}
catch (Exception)
{
return "[ Invalid Version Input! ]";
}
}
TA贡献1805条经验 获得超9个赞
我建议这样的方法:
string nextVersion(string user_input)
{
var entries = user_input.Split('.')
.Select( s => int.Parse(s) )
.ToArray();
void Inc(int index)
{
if ( index == 0 || ( entries[index] < 9 ) )
{
entries[index]++;
}
else
{
entries[index] = 0;
Inc( index-1 );
}
}
Inc( entries.Length-1 );
return String.Join( ".", entries );
}
它将字符串拆分为一个数组,并将每个部分转换为一个 int。然后它对 int 进行操作,然后从 int 值重新构建版本字符串。
TA贡献1906条经验 获得超3个赞
这对我有用,我在经过测试和工作的小提琴中制作了它
基本上它只是检查数字的长度(以字符为单位)以及它是否大于数字+ 1的字符长度然后它将它转换为0然后将1添加到以下数字,我应该为每个长度添加1个零号码有,但这应该可以解决您的问题。
编辑:Nvm 使它适用于需要许多 0 的情况
即:1.99 == 2.00 而不是 1.99 == 2.0
小提琴链接:https ://dotnetfiddle.net/wvqHvu
using System;
public class Program
{
public static void Main()
{
Console.WriteLine(next_Version("1.2.3.4"));
Console.WriteLine(next_Version("11.2.3"));
}
public static string next_Version(string version)
{
string[] a = version.Split('.');
int x = a.Length;
int carrying = 1;
while(x>0){
int number = Convert.ToInt32(a[x-1]);
if(Convert.ToString(number+carrying).Length > Convert.ToString(number).Length){
string zeroes = "";
foreach(char c in Convert.ToString(number)){
zeroes += "0";
}
a[x-1] = zeroes;
carrying = 1;
}else{
a[x-1] = Convert.ToString(number+carrying);
carrying = 0;
}
x--;
}
String result = "";
foreach(string s in a){
result+=s+".";
}
return result.TrimEnd('.');
}
}
- 3 回答
- 0 关注
- 95 浏览
添加回答
举报