我有一个字符串数组
$list = @("abc-1.0.1-xyz", "abc-1.0.2-xyz", "abc-1.0.3-xyz", "abc-1.0.4-xyz")
和声明为$v = '1.0.2'
的变量。
现在我想将我的数组与变量进行比较,并获取另一个数组中包含大于$v
的值的所有字符串。
例如:在这种情况下,abc-1.0.3-xyz
和abc-1.0.4-xyz
(大于$v
,即1.0.2
)将被添加到另一个数组中。
答案 0 :(得分:4)
我会使用简单的正则表达式:
$list = 'abc-1.0.1-xyz', 'abc-1.0.2-xyz', 'abc-1.0.3-xyz', 'abc-1.0.4-xyz'
$v = '1.0.2'
$list | % {
$match = [regex]::Match($_, '\d+\.\d+\.\d+').Value
if ($match -gt $v) { $_ }
}
<强>结果强>
abc-1.0.3-xyz
abc-1.0.4-xyz
如果您希望使用版本比较(字符串规则不同,即10 <9),请将条件替换为以下内容:
if ([version]$match -gt [version]$v) { $_ }