您可以使用此:
$aptReg=[regex]'^(.*)(Apt.*)$'
"839 Main St Apt 3","130 Marcy Ave","399 Broadway Ave Apt 6F" | % {if($aptReg.IsMatch($_)){$a=$aptReg.Matches($_);[PSCustomObject]@{"A1"=$a.Groups[1].Value;"A2"=$a.Groups[2].Value}}else{[PSCustomObject]@{"A1"=$_;"A2"=""}}}
它提供:
A1 A2
-- --
839 Main St Apt 3
130 Marcy Ave
399 Broadway Ave Apt 6F
鑑於以下CSV文件:
"Name","Surname","Address","Zipcode"
"N1","S1","839 Main St Apt 3","Z1"
"N2","S2","130 Marcy Ave","Z2"
"N2","S2","399 Broadway Ave Apt 6F","Z2"
很長的一個襯墊...
Import-Csv C:\ Temp \ test.csv | %{if($ aptReg.IsMatch($ .Address)){$ a = $ aptReg.Matches($ .address); $ a1 = $ a.Groups [1] .Value; $ a2 = $ a.Groups [2] .Value} else {$ a1 = $ .address; $ a2 =「」}; Add-Member -InputObject $ -MemberType NoteProperty -Name「A1」-Value $ a1; Add-Member -InputObject $ _ -MemberType NoteProperty - 名稱「A2」 - 值$ a2; $ _} | Export-Csv「C:\ Temp \ test Bis.csv」
髒數據總是一個問題。如果總是使用'Apt'縮寫,那麼你可以分開。 – EBGreen
這就是我的想法。有沒有辦法根據這個詞分割它,並保持它?我正在考慮附加丟失的字母,如果我使用拆分功能,但不是每行都有APT。在Excel中,我會使用搜索和替換附加〜APT的infront,然後使用文本到列並使用〜作爲分隔符。我不知道如何通過PowerShell去做這件事。 – User125
是的,您需要拆分單詞(包括它周圍的空格)並將Apt添加回拆分後的第二個位。你也需要使用一些邏輯來處理沒有它的行。 – EBGreen