如何解析具有多个小数点的字符串

本文关键字:小数点 字符串 何解析 | 更新日期: 2023-09-27 18:25:06

我想把一个字符串(如"10.0.20")解析成一个数字,以便在C#.net 中比较另一个具有相同格式的字符串

例如,我会比较这两个数字,看看哪个比另一个小:if(10.0.30<10.0.30)…

我不确定应该使用哪种解析方法,比如十进制。Parse(字符串)在这种情况下不起作用。

谢谢你抽出时间。

编辑:@Romoku回答了我的问题,我从来不知道有一个Version类,这正是我所需要的。嗯,TIL。谢谢大家,如果不是因为你们,我会花几个小时翻阅表格的。

如何解析具有多个小数点的字符串

您试图解析的字符串看起来像verson,所以请尝试使用Version类。

var prevVersion = Version.Parse("10.0.20");
var currentVersion = Version.Parse("10.0.30");
var result = prevVersion < currentVersion;
Console.WriteLine(result); // true

版本看起来是最简单的方法,但是,如果您需要无限的"小数位数",请尝试以下

private int multiDecCompare(string str1, string str2)
    {
        try
        {
            string[] split1 = str1.Split('.');
            string[] split2 = str2.Split('.');
            if (split1.Length != split2.Length)
                return -99;
            for (int i = 0; i < split1.Length; i++)
            {
                if (Int32.Parse(split1[i]) > Int32.Parse(split2[i]))
                    return 1;
                if (Int32.Parse(split1[i]) < Int32.Parse(split2[i]))
                    return -1;
            }
            return 0;
        }
        catch
        {
            return -99;
        }
    }

如果第一个字符串从左到右更大,则返回1;如果字符串为2,则返回-1;如果相等,则返回0;如果错误,则返回-99。

也会返回1

string str1 = "11.30.42.29.66";
string str2 = "11.30.30.10.88";