如何将字符串数组与字符串变量匹配?

时间:2018-01-17 07:10:57

标签: arrays powershell string-comparison

我有一个字符串数组

$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-xyzabc-1.0.4-xyz(大于$v,即1.0.2)将被添加到另一个数组中。

1 个答案:

答案 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) { $_ }