正在尝试将CSV文件中特定行(结果)中的数据修剪/删除到特定长度。继续为子串"进行超载#34;。有什么想法吗?
compile
答案 0 :(得分:3)
看起来像Substring用法中的一个简单错误。 删除其中一个括号。
来自:
$Row.Results.Substring((0,[System.Math]::Min(254,$Row.Results.Length)))}
致:
$Row.Results.Substring(0,[System.Math]::Min(254,$Row.Results.Length))}
为了便于阅读,您可以将子字符串计数放入变量中。错误会显得更加明显。
$Csv = Import-Csv $FileIn
$CsvNew = ForEach($Row in $Csv)
{
$MaxLength = [System.Math]::Min(254,$Row.Results.Length)
$Row.Results.Substring(0,$MaxLength )
}
编辑:
最后,请注意$ CsvNew(我从你的例子中获取)不存储任何东西。 如果要编辑CSV行内容,请改用此行。
$Csv = Import-Csv $FileIn
$Csv | ForEach-Object {
$MaxLength = [System.Math]::Min(254,$_.Results.Length)
$_.Results.Substring(0,$MaxLength )
}
这最后一段代码实际上会编辑$ Csv变量内容,以将结果列修剪为最多254个字符。 (虽然它不会导出到文件中。为此,您需要使用ExportTo-CSV Cmdlet导出新的$ Csv内容)。