在powershell中将字符串转换为int数组

时间:2014-04-08 00:39:50

标签: powershell

我试图转换一个看起来像这样的字符串

    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的范围。我如何让这部分工作?

3 个答案:

答案 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

要使您的程序正常工作,您不仅要对其进行标记,还要对其进行标记..然后展开。