打破C#倒数第二个字符串的最佳方法

时间:2013-12-18 19:06:04

标签: c# string

需要从“1.2.3.4”到“1.2”的字符串中获取子字符串 我有这个解决方案:

string version = "1.2.3.4";
var major = version.Substring(0, version.Substring(0, version.LastIndexOf('.')).LastIndexOf('.'));

但它看起来很难看。 什么是最好的方法呢? (注意)初始字符串可能具有不同的大小,如11.22.33.44或其他

5 个答案:

答案 0 :(得分:8)

这样的东西?

var newstr = String.Join(".", "1.2.3.4".Split('.').Take(2));

或者您可能想要使用Version

var ver = new Version("1.2.3.4");
Console.WriteLine(ver.Major + "." + ver.Minor);

答案 1 :(得分:2)

考虑使用Version类:

string version = "1.2.3.4";
Version ver = new Version(version);

然后您可以合并MajorMinor

var major = string.Format("{0}.{1}", ver.Major, ver.Minor);

这会给你"1.2"

答案 2 :(得分:0)

这个怎么样?

string version = "1.2.3.4";
int pos1 = version.IndexOf(".");
if (pos1 >= 0)
{
    pos1++;
    int pos2 = version.IndexOf(".", pos1);
    if (pos2 >= 0)
    {
        version = version.Substring(0, pos2);
    }
}

答案 3 :(得分:0)

我喜欢使用正则表达式进行这种解析:

    string version = "1.2.3.4";
    string sub = Regex.Match(version, @"[1-9].[1-9]").ToString();

答案 4 :(得分:0)

嗯,这是另一种方法。虽然你应该使用Version类。

string version = "1.2.3.4";

int indexOfFirstDot = version.IndexOf('.', 0);
int indexOfSecondDot = version.IndexOf('.', indexOfFirstDot+1);

string majorAndMinorVersion = version.Substring(0, indexOfSecondDot);