[英]Powershell regex to split folder path (csv file)
我在csv文件中有一个文件夹路径列表,例如
\Customer
\Customer\Customer A
\Customer\Customer A\Bob
\Customer\Customer B
\Supplier
"\Supplier\Supplier, A, B"
注意双引号
我需要做的是在最后一个“ \\”处分割每一行,然后将数据
,Customer
\Customer,Customer A
\Customer\Customer 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',
'\Customer\Customer A',
'\Customer\Customer A\Bob',
'\Customer\Customer B',
'\Supplier',
'"\Supplier\Supplier, 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.