在PowerShell中将字符串转换为int数组
我正试图转换一个如下所示的字符串在PowerShell中将字符串转换为int数组,powershell,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的范围。如何使该部件工作?在字符串中,您的。按原样处理,不扩展到某个范围 所以$a=“1..5”实际上是1。。5,而不
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的范围。如何使该部件工作?在字符串中,您的
。
按原样处理,不扩展到某个范围
所以$a=“1..5”实际上是1。。5,而不是1,2,3,4,5
要使程序正常工作,您不仅必须在
、
上标记,而且还必须在。
上标记,然后进行扩展。如果[int]::Parse()
方法调用失败,您可以使用Invoke Expression
cmdlet解释10..30
位
这是一个完整的工作示例
[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;
一行(只是为了好玩):
做得好,但如果不看特雷弗的代码和解释,我就无法理解你在这里做什么@不可能的谢谢,但我真诚地希望您不要使用在不必要时生成异常的代码;)我不能对一行程序说不…在试用了你的两个代码之后,我最终使用了你的代码,因为它很简单。再次感谢@我很乐意帮忙!您可以随时更改选择答案;)如果字符串不包含逗号-split仍然使用一个元素作为数组-就可以了。但在转换成数字后,它使Int32变量不是数组:(谢谢,这就是我要找的!@impossible Squi不客气-我很高兴这有帮助!
$c = "2,3,4,5,6,7,10..30".split(',') | % {iex $_}