C#:从字符串版本号中过滤诸如“-beta1”和“hotfix”之类的内容
C#: Filter things like `-beta1` and ` hotfix` from a string version number
我正在处理一些旧版本字符串,这些字符串通常采用 1.2.3
形式,但有时它们的末尾有标记,例如 -beta1
或 hotfix
(space 在开头)。
我只想过滤版本号,例如。 1.2.3
,只剩下数字 (0-9
) 和句点 (.
),这样我就可以将它传递给 Version.TryParse()
,它很有可能会被解析。
我在网上看了几个例子,但它们似乎都集中在像 12.34
这样的数字上,并且当有像 12.34.56
.
性能并不重要,可维护性才是。哪种方法最合适?
您可以在正则表达式的帮助下尝试匹配:
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
}
我正在处理一些旧版本字符串,这些字符串通常采用 1.2.3
形式,但有时它们的末尾有标记,例如 -beta1
或 hotfix
(space 在开头)。
我只想过滤版本号,例如。 1.2.3
,只剩下数字 (0-9
) 和句点 (.
),这样我就可以将它传递给 Version.TryParse()
,它很有可能会被解析。
我在网上看了几个例子,但它们似乎都集中在像 12.34
这样的数字上,并且当有像 12.34.56
.
性能并不重要,可维护性才是。哪种方法最合适?
您可以在正则表达式的帮助下尝试匹配:
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
}