亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遞增由 .'s 分隔的字符串值編號(即 1.2.3 == 1.2.4)

如何遞增由 .'s 分隔的字符串值編號(即 1.2.3 == 1.2.4)

C#
拉莫斯之舞 2022-12-31 13:13:44
我正在嘗試更新一個字符串參數并返回另一個具有更新版本號的字符串。示例輸入和輸出:nextVersion("1.2.3") === "1.2.4"?nextVersion("0.9.9") === "1.0.0."?nextVersion("1") === "2"?nextVersion("1.2.3.4.5.6.7.8") === "1.2.3.4.5.6.7.9"?nextVersion("9.9") === "10.0"?除第一個數字外,所有數字不得大于 10:如果有,則必須將它們設置為 0 并按順序遞增下一個數字。到目前為止,我可以: - 將字符串分開 - 增加一 - 放回原處我需要幫助來確定版本號是否以 11.1 開頭,因為當我增加它時,它變成 1.1.2 而不是 11.2    static void Main(string[] args)    {        string user_input;        Console.WriteLine("Hello");        Console.WriteLine("Please input the version number to increment: ");        user_input = Console.ReadLine();        string new_version_number = next_Version(user_input);        Console.WriteLine("Your number is : {0}", new_version_number);        Console.ReadKey();    }        public static string next_Version(string user_input)    {        //removing . for parsing        string string_no_dots = user_input.Replace(".", "");        //storing length to see if incrementing from version x99 to 100        int string_length = string_no_dots.Length;        //convert to int to increment version        int number_no_dots;        int.TryParse(string_no_dots,out number_no_dots);        //increment by 1        int new_version_number = number_no_dots+1;        //convert back to string        string new_version_string = Convert.ToString(new_version_number);        //add the periods        string string_with_dots = String.Join<char>(".", new_version_string);        return string_with_dots;    }輸入:1.2.3.4輸出:1.2.3.5 是正確的但當輸入:11.2.3輸出:1.1.2.4 而實際輸出應該是 11.2.4感謝您的時間
查看完整描述

3 回答

?
繁星coding

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! ]";

    }

}


查看完整回答
反對 回復 2022-12-31
?
Cats萌萌

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 值重新構建版本字符串。


查看完整回答
反對 回復 2022-12-31
?
一只名叫tom的貓

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('.');

    }

}


查看完整回答
反對 回復 2022-12-31
  • 3 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號