Powershell子串设置特定的单元长度

时间:2017-09-05 17:57:54

标签: powershell csv substring

正在尝试将CS​​V文件中特定行(结果)中的数据修剪/删除到特定长度。继续为子串"进行超载#34;。有什么想法吗?

compile

1 个答案:

答案 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内容)。