C#:从字符串版本号中过滤诸如 `-beta1` 和 `hotfix` 之类的东西

Posted

技术标签:

【中文标题】C#:从字符串版本号中过滤诸如 `-beta1` 和 `hotfix` 之类的东西【英文标题】:C#: Filter things like `-beta1` and ` hotfix` from a string version number 【发布时间】:2020-05-30 01:39:24 【问题描述】:

我正在处理一些旧版本的字符串,这些字符串通常采用 1.2.3 的形式,但有时它们会在末尾标记一些内容,例如 -beta1hotfix(开头的空格)。

我想过滤到版本号,例如。 1.2.3,只剩下数字 (0-9) 和句点 (.),这样我就可以将它传递给 Version.TryParse(),它很有可能会被解析。

我在网上查看了几个示例,但它们似乎都专注于像 12.34 这样的数字,并且当有像 12.34.56 这样的额外句号部分时不起作用。

性能并不重要,可维护性才是。哪种方法最合适?

【问题讨论】:

string version = Regex.Match(yourString, @"[0-9]+(?:\.[0-9]+)+").Value; 看看semver recommended regex 和这个在线test 你的问题与语义版本控制密切相关 【参考方案1】:

您可以在正则表达式的帮助下尝试匹配

using System.Text.RegularExpressions;

... 

string source = "some text with 1.2.34.4893-beta1 version" ;

if (Version.TryParse(Regex.Match(source, @"[0-9]+(?:\.[0-9]+)+").Value, out var version)) 
  // version  extracted

else 
  // source doesn't have a match

【讨论】:

以上是关于C#:从字符串版本号中过滤诸如 `-beta1` 和 `hotfix` 之类的东西的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix 5.0.0beta1版本初体验

Zabbix upgrade 5.0.0beta1

我如何使用简单的python if语句从诸如kill,gun之类的单词中过滤输入结果

PostgreSQL 14 Beta1 版本的新特性PDF

PostgreSQL 14 Beta1 版本的新特性PDF

C#从xml中删除无效字符[重复]