3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
嘗試這樣的事情:
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貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
我建議這樣的方法:
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 );
}
它將字符串拆分為一個(gè)數(shù)組,并將每個(gè)部分轉(zhuǎn)換為一個(gè) int。然后它對 int 進(jìn)行操作,然后從 int 值重新構(gòu)建版本字符串。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
這對我有用,我在經(jīng)過測試和工作的小提琴中制作了它
基本上它只是檢查數(shù)字的長度(以字符為單位)以及它是否大于數(shù)字+ 1的字符長度然后它將它轉(zhuǎn)換為0然后將1添加到以下數(shù)字,我應(yīng)該為每個(gè)長度添加1個(gè)零號碼有,但這應(yīng)該可以解決您的問題。
編輯: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 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)