我有一个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