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
的形式,但有时它们会在末尾标记一些内容,例如 -beta1
或 hotfix
(开头的空格)。
我想过滤到版本号,例如。 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` 之类的东西的主要内容,如果未能解决你的问题,请参考以下文章