Powershell regex分割文件夹路径(csv文件)



我有一个csv文件中的文件夹路径列表,例如

Customer
CustomerCustomer A
CustomerCustomer ABob
CustomerCustomer B
Supplier
"SupplierSupplier, A, B"

注意双引号

我需要做的是在最后一个""处拆分每一行,这样数据就在

,Customer
Customer,Customer A
CustomerCustomer A,Bob
Customer,Customer B
,Supplier
"Supplier","Supplier, A, B"

注意双引号

如果可能的话,我希望任何代码都在powershell中。我尝试通过使用(.*)\使用notepad++,它选择所有直到并包括最后一个"",但不知道如何切换为","。这也不能帮助我处理双引号

$pattern = '\([^\]+)$' 
$paths | Foreach-Object {
    if($_ -like '"*"')
    {
        $_ -replace $pattern,'","$1'  
    }
    else
    {
        $_ -replace $pattern,',$1'      
    }
}

您可以使用String.LastIndexOf查找分歧点。假设您想要的只是一个包含更改的字符串列表,那么应该可以这样做:

[String[]] $l = 'Customer',
'CustomerCustomer A',
'CustomerCustomer ABob',
'CustomerCustomer B',
'Supplier',
'"SupplierSupplier, A, B"' 
[String[]] $r = @()
foreach ($x in $l)
{
    # work out whether we need to double-quote or not
    if (($x[0] -eq '"') -and ($x[$x.Length - 1] -eq '"'))
    {
        $joiner = '","'
    }
    else
    {
        $joiner = ','
    }
    $i = $x.LastIndexOf('')
    $s = [String]::Concat($x.Substring(0, $i), $joiner, $x.Substring($i + 1))
    $r = $r + $s
}
$r # contains your output

最新更新