2016-02-05 139 views
0

我有两个问题,acually:如何连接整数数组为逗号分隔字符串

  1. 如何加入整数数组为逗号分隔字符串? (1,2,3)=>“1,2,3”
  2. 如何将整数数组转换为字符串数组? (1,2,3)=>( “1”, “2”, “3”)
$arraylist = New-Object 'system.collections.arraylist' 
$arraylist.Add(1); 
$arraylist.Add(2); 

$csv = ?? 
#($arraylist-join -',') returns error: Cannot convert value "," to type "System.Int32". Error: "Input string was not in a correct format." 
+1

将'-'前面的'-'去掉'-join':'$ arraylist -join','' –

+0

请将它写成asnwer,它的工作 – Liero

+0

我已经提交了答案 –

回答

1

在你的问题,你注释掉下面的代码片段:

($arraylist-join -',') 

,因为它返回的错误Cannot convert value "," to type "System.Int32"...

这样做的原因是在','前面的仪表板-

在PowerShell中,只有运营商参数都带有前缀破折号,由于','既不是(这是一个参数给操作员),PowerShell的解析器变得超级困惑,并试图把-','作为值表达式会导致负数。

就作废破折号,你会被罚款:

$arraylist -join ',' 

最后,你可以轻松地投整数数组到字符串数组和未选中的转换运算符-as(PowerShell的3.0和较新的):

$StringArray = 1,2,3,4,5 -as [string[]] 

或与有明确的转换(PowerShell的2.0兼容):

$StringArray = [string[]]@(1,2,3,4,5) 
-1

我不如果这是正确的。通常,他们有powershell2。只需要尝试一下。

$a = @() 
$strArrayNum="" 
for($i=0; $i -lt $arraylist.length; $i++){ 
    $strArrayNum += $element 
    $strArrayNum = $i+1 -eq $arraylist.length ? "" : "," 
} 

$a = $strArrayNum.Split(",") 
1

这为我工作:

[String]::Join(",", $arraylist.ToArray()) 

1,2

然后第二部分:

foreach($number in $arraylist) { $number.ToString() } 
2

接着代码段可以帮忙上理解:

$arraylist = New-Object 'system.collections.arraylist' 
$arraylist.Add(111)   | Out-Null 
$arraylist.Add([string]222) | Out-Null 
$arraylist.Add('"' + 3 + '"') | Out-Null 
for($i=0; $i -lt $arraylist.Count; $i++){ 
    write-host $i, $arraylist[$i], $arraylist[$i].GetType() 
} 
write-host '' 
$csv = $arraylist -join ',' 
$csv 

输出

0 111 System.Int32 
1 222 System.String 
2 "3" System.String 

111,222,"3" 

的附加视图(未)重要性为"双引号S IN字符串类型显示下一+操作(整数的总和,但字符串的串联):

write-host $i, $arraylist[$i], $arraylist[$i].GetType().Name, ($arraylist[$i] + 55) 

给下一个输出:

0 111 Int32 166 
1 222 String 22255 
2 "3" String "3"55 

111,222,"3" 

然而,"双引号有.csv另一个重要和有意义的作用文件导入时例如到Excel工作表。

相关问题