我正在阅读一个包含一系列版本的XML文件,例如:x1c 0d1x 8.6.22.0至8.6.24.999
我的目标是了解每个条目是否只包含8.6.22*-8.6.22* 的范围,并且在字符串的任何位置都不包含版本8.6.21/3/4。(8.6.22.000,8.6.22.999)我尝试执行此操作,它对(8.6.20.0-8.6.22.999或8.6.1000.0000-8.6.4000.9999)有效,但对(8.6.22.0-8.6.24.999)无效
这是我的代码的一部分:有一个函数可以从XML读取所有版本,并填充我在循环中为每个版本运行的$versions,然后与8.6.22* 进行比较
$compareversion = "8.6.22*"
if (![string]::IsNullOrEmpty($versions)) {
Write-host "Versions range (Manifest):"
foreach ($v in $versions) {
if ($v -notlike $compareversion) {
Write-host $v -ForegroundColor Red
}
else {
Write-host $v
}
}
Write-Host
}
输出为:
Versions range (Manifest):
8.6.22.607-8.6.22.999
8.6.22.0-8.6.22.999999
8.6.22.0-8.6.22.999999
8.6.22.607-8.6.22.999
8.6.22.0-8.6.22.999
8.6.22.0-8.6.22.999
8.6.22.0-8.6.22.999
8.6.22.0-8.6.22.999
8.6.22.0-8.6.24.99999999
8.6.22.0000-8.6.22.9999
8.6.22.0000-8.6.22.9999
8.6.1000.0000-8.6.4000.9999
8.6.22.607-8.6.22.999
8.6.22.000-8.6.24.999
8.6.22.000-8.6.22.999
8.6.22.1-8.6.22.9999
8.6.22.0000-8.6.22.9999
8.6.22.1-8.6.22.9999
8.6.20.0-8.6.22.999
8.6.22.001-8.6.22.999
1条答案
按热度按时间t40tm48m1#
你可以使用
Version
class来帮助你比较每行的开始和结束范围,因为这个类实现了IComparable
,所以它使得检查一个版本是高于还是低于目标范围变得非常容易。假设所有这些范围都存储在
$allRanges
中:使用此代码的结果为: