0

我正在尝试从管道分隔文件的第 15 列和第 16 列中删除空格。

我在网上搜索后尝试了这篇文章底部的代码,但它失败了

您不能在空值表达式上调用方法。在 line:19 char:2 + $ .h15=$ .h15.ToString().Replace(' ','') + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

您不能在空值表达式上调用方法。在 line:20 char:5 + $ .h16=$ .h16.ToString().Replace(' ','') + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNul

我从那猜想,它没有读入数据,但我不明白为什么不读。我检查了变量,它们是正确的。

$header = 1..42 | ForEach-Object { "h$_" }
$dialler_out_path="$dialler_file_dir\$output_file"

$dialler_path="$dialler_file_dir\$dialler_file"

(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | %{ 
    $_.h15=$_.h15.ToString().Replace(' ','')
    $_.h16=$_.h16.ToString().Replace(' ','')
}) | export-csv $dialler_out_path -NoType
4

1 回答 1

0

处理空对象的另一种方法(除了注释):

$_.h15 = (-join ($_.h15)).ToString().Replace(' ','')

您应该在 foreach 中产生输出:

(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | %{ 
$_.h15 = (-join ($_.h15)).ToString().Replace(' ','')
$_.h16 = (-join ($_.h16)).ToString().Replace(' ','')

$_

}) | export-csv $dialler_out_path -NoType
于 2017-11-02T17:45:41.650 回答