我有两个问题,实际上:
$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."
答案 0 :(得分: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"
字符串类型中"
双引号的(非)重要性的附加视图显示了下一个+
操作(整数之和但字符串的连接):
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表格。
答案 1 :(得分:2)
在您的问题中,您已注释掉以下代码段:
($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)
答案 2 :(得分:1)
这对我有用:
[String]::Join(",", $arraylist.ToArray())
我得到1,2
。
然后是第二部分:
foreach($number in $arraylist) { $number.ToString() }
答案 3 :(得分:-1)
如果这是正确的,我不这样做。通常,他们有powershell2。试试吧。
properties = {"annotators": "...", "parse.flags": " -makeCopulaHead"}
properties = {"annotators": "...", "parse.flags": "makeCopulaHead"}