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 關注
- 126 瀏覽
添加回答
舉報