从字符串中提取版本号 [英] Extract version number from string

查看:124
本文介绍了从字符串中提取版本号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



如果我传递一个字符串(verstring ==vername.1.19.5)它会返回版本,因为我忽略了Currentver [ 0]。如果我想传递verstring ==1.19.5。



我的意思是我将使用版本名称(vername)或仅版本(1.19)获得两种格式的verstring .5)



Hi all,

if i pass a string (verstring == "vername.1.19.5") it will return the version because i am ignoring Currentver[0]. if i want to pass verstring == "1.19.5".

I mean i will get verstring in both formats with version name(vername) or only version(1.19.5)

public VerInfo(string verString)
        {
            string[] currentVer;

            if (versionString.Contains("."))
                currentVer= versionString.Split(".".ToCharArray());
            else
                currentVer= versionString.Split(":".ToCharArray());

            a= Convert.ToByte(currentVer[1]);
            b= Convert.ToByte(currentVer[2]);
            c= Convert.ToByte(currentVer[3]);
        }





我的尝试:



我试过使用字符串长度,这里字符串长度各不相同





if(versionString.Length> 5 )



What I have tried:

I have tried using the string length, here string length vary's


if (versionString.Length > 5)

推荐答案

您可以通过 Regex 类使用正则表达式

尝试,例如

You could use regular expressions, via the Regex class.
Try, for instance
public static void Main()
{
  string[] verstring = new string[] { "vername.1.19.5", "1.19.5" };

  Regex r = new Regex(@"(?:vername\.?:)?(\d+)\.(\d+)\.(\d+)");
  for (int n = 0; n < 2; ++n)
  {
    System.Console.Write("Input string: '{0}', extracted numbers: ", verstring[n]);
    Match m = r.Match(verstring[n]);
    if (m.Success)
    {
      for (int i = 0; i < 3; ++i)
        System.Console.Write("'{0}' ", m.Groups[i + 1].Captures[0]);
      System.Console.WriteLine();
    }
  }
}





输出:



Output:

Input string: 'vername.1.19.5', extracted numbers: '1' '19' '5' 
Input string: '1.19.5', extracted numbers: '1' '19' '5' 


您好会员12277263



你的问题基本上是要理解 currentVer [0] 是否是一个字符串('vername'),并根据该解析其余版本信息。



快速解决方法是:



1)检查第一个索引是一个字符串('vername')。

2)根据那个设置解析索引启动 - 如果它应该从0开始,或者1.

Hi Member 12277263,

Your problem is basically to understand if currentVer[0] is a string ('vername') or not, and according to that parse the rest of the version information.

A quick workaround is:

1) Check if the first index is a string ('vername').
2) According to that set the parsing index starter - if it should start from 0, or 1.
public void VerInfo(string verString)
{
    string[] currentVer;

    if (verString.Contains("."))
        currentVer = verString.Split(".".ToCharArray());
    else
        currentVer = verString.Split(":".ToCharArray());

    int Index = 0;
    if (currentVer[0].ToLower().Equals("vername"))
        Index = 1;
    else Index;

    byte a = Convert.ToByte(currentVer[Index++]);
    byte b = Convert.ToByte(currentVer[Index++]);
    byte c = Convert.ToByte(currentVer[Index]);
}

您可以通过替换为三元运算符来进一步细化IF-ELSE语句。为了清楚起见,我没有这样做。

You can further refine the IF-ELSE statement by replacing with ternary operator. I didn't do that for sake of clarity.


这篇关于从字符串中提取版本号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆