我试图转换一个看起来像这样的字符串
2,3,4,5,6,20..30
到整数数组。这是我目前的代码:
[string]$a = "2,3,4,5,6,7"
[array]$b = $a.split(",")
[array]$c = foreach($number in $b) {([int]::parse($number))}
哪个有效,但不适用于20..30的范围。我如何让这部分工作?
答案 0 :(得分:4)
$c = "2,3,4,5,6,7,10..30".split(',') | % {iex $_}
答案 1 :(得分:3)
如果Invoke-Expression
方法调用失败,您可以使用10..30
cmdlet解释[int]::Parse()
位。
这是一份完整的工作样本。
[string]$a = "2,3,4,5,6,7,10..30";
[array]$b = $a.split(",");
[array]$c = foreach($number in $b) {
try {
[int]::parse($number)
}
catch {
Invoke-Expression -Command $number;
}
}
$c;
答案 2 :(得分:0)
在字符串内部,您的..按原样拍摄,不会扩展到范围。
所以$ a =“1 .. 5”
实际上是1 .. 5
而不是1,2,3,4,5
要使您的程序正常工作,您不仅要对其进行标记,还要对其进行标记..然后展开。